setOwnProp = (obj, key, value, mutable = true, valueKey) => (
  defineProperty(obj, key, {
    __proto__: null,
    [valueKey || 'value']: value,
    [!valueKey && 'writable']: mutable, // only allowed for 'value'
    configurable: mutable,
    enumerable: mutable,
  })
)
@param {T} obj
@param {string|Symbol} key
@param {?} value
@param {boolean} [mutable]
@param {'set' | 'get'} [valueKey]
@return {T}
@template T