SymbolImpl = function Symbol(description) {
  var value = new SymbolValue(description);
  if (!(this instanceof SymbolImpl))
    return value;

  // new Symbol should throw.
  //
  // There are two ways to get a wrapper to a symbol. Either by doing
  // Object(symbol) or call a non strict function using a symbol value as
  // this. To correctly handle these two would require a lot of work for very
  // little gain so we are not doing those at the moment.
  throw new $TypeError('Symbol cannot be new\'ed');
}
Creates a new unique symbol object.
@param {string=} string Optional string used for toString.
@constructor