var global = require('../internals/global');
var shared = require('../internals/shared');
var uid = require('../internals/uid');
var NATIVE_SYMBOL = require('../internals/native-symbol');
var USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');

var Symbol = global.Symbol;
var store = shared('wks');

module.exports = function (name) {
  return store[name] || (store[name] = NATIVE_SYMBOL && Symbol[name]
    || (USE_SYMBOL_AS_UID ? Symbol : uid)('Symbol.' + name));
};

@@ -79,24 +79,63 @@
 s/shared');%0A
+var has = require('../internals/has');%0A
 var uid = re
@@ -296,57 +296,135 @@
 var 
-Symbol = global.Symbol;%0Avar store = shared('wks')
+WellKnownSymbolsStore = shared('wks');%0Avar Symbol = global.Symbol;%0Avar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : uid
 ;%0A%0Am
@@ -463,45 +463,57 @@
 %7B%0A  
-return store%5Bname%5D %7C%7C (s
+if (!has(WellKnownSymbolsS
 tore
-%5B
+, 
 name
-%5D = 
+)) %7B%0A    if (
 NATI
@@ -529,81 +529,189 @@
  && 
+has(
 Symbol
-%5Bname%5D%0A    %7C%7C (USE_SYMBOL_AS_UID ? Symbol : uid)('Symbol.' + name))
+, name)) WellKnownSymbolsStore%5Bname%5D = Symbol%5Bname%5D;%0A    else WellKnownSymbolsStore%5Bname%5D = createWellKnownSymbol('Symbol.' + name);%0A  %7D return WellKnownSymbolsStore%5Bname%5D
 ;%0A%7D;

refactor `well-known-symbol` helper