code: function define(obj, property, value, setter = false) {
      if (setter) {
          return Object.defineProperty(obj, property, {
              value: value,
              writable: true,
              configurable: false,
              enumerable: true
          });
      } else {
          return Object.defineProperty(obj, property, {
              get: function () {
                  return value;
              },
              configurable: false,
              enumerable: true
          });
      }
  }
docs: Short for Object.defineProperty,
  the property is getter when setter is false
  @param {any} obj
  @param {any} property
  @param {any} value
  @param {boolean} [setter=false]
  @returns {void}