code: function defineProperty(target, property, value, options) {
    Object.defineProperty(target, property, {
      value,
      writable: (options && options.writable) !== false,
      configurable: (options && options.configurable) !== false,
      enumerable: options && options.enumerable
    });
    return target;
  }
docs: /* eslint-disable max-lines, flowtype/no-weak-types 
  @param {Object} target
  @param {string} property name of the property
  @param {*} value value
  @param {Object} [options]
  @param {boolean} [options.writable=true]
  @param {boolean} [options.configurable=true]
  @param {boolean} [options.enumerable=false]