code: function setProperty(inherits, target, key, descriptor, publicStatic, isNOTExtendingNative) {
      var
        hasValue = hOP.call(descriptor, VALUE),
        configurable,
        value
      ;
      if (publicStatic) {
        if (hOP.call(target, key)) {
          // in case the value is not a static one
          if (
            inherits &&
            isObject(target[key]) &&
            isObject(inherits[CONSTRUCTOR][key])
          ) {
            copyMerged(inherits[CONSTRUCTOR][key], target[key]);
          }
          return;
        } else if (hasValue) {
          // in case it's an object perform a deep copy
          copyValueIfObject(descriptor, copyDeep);
        }
      } else if (hasValue) {
        value = descriptor[VALUE];
        if (typeof value === 'function' && trustSuper(value)) {
          descriptor[VALUE] = wrap(inherits, key, value, publicStatic);
        }
      } else if (isNOTExtendingNative) {
        wrapGetOrSet(inherits, key, descriptor, 'get');
        wrapGetOrSet(inherits, key, descriptor, 'set');
      }
      configurable = isConfigurable(key, publicStatic);
      descriptor.enumerable = false; // was: publicStatic;
      descriptor.configurable = configurable;
      if (hasValue) {
        descriptor.writable = configurable;
      }
      defineProperty(target, key, descriptor);
    }
docs: set a property via defineProperty using a common descriptor only if properties where not defined yet. If publicStatic is true, properties are both non configurable and non writable