es2015/createNamespaceProxy.js
function getSymbol(symbols, propertyName) {
  if (symbols.has(propertyName)) {
    return {
      symbol: symbols.get(propertyName),
      isNew: false
    }
  }

  let symbol = Symbol(propertyName)
  symbols.set(propertyName, symbol)
  return {
    symbol,
    isNew: true
  }
}
function getSymbol(symbols, propertyName) {
  if (symbols.has(propertyName)) {
    return {
      symbol: symbols.get(propertyName),
      isNew: false
    }
  }

  let symbol = Symbol(propertyName)
  symbols.set(propertyName, symbol)
  return {
    symbol,
    isNew: true
  }
}
function getSymbol ( symbols , propertyName ) { if ( symbols . has ( propertyName ) ) { return { symbol : symbols . get ( propertyName ) , isNew : false } } let symbol = Symbol ( propertyName ) symbols . set ( propertyName , symbol ) return { symbol , isNew : true } }
Retrieves or generates and caches the private field symbol for the private
property of the specified name.

@param {Map<string, symbol>} symbols Cache of private property symbols.
@param {string} propertyName The name of the private property.
@return {{symbol: symbol, isNew: boolean}} An object wrapping the symbol to
use for setting and retrieving the value of the specified private
property. The {@code isNew} flag specifies whether the symbol has
just been created.
Retrieves or generates and caches the private field symbol for the private property of the specified name .