function CreateSetPolyfill() {
            return /** @class */ (function () {
                function Set() {
                    this._map = new _Map();
                }
                Object.defineProperty(Set.prototype, "size", {
                    get: function () { return this._map.size; },
                    enumerable: true,
                    configurable: true
                });
                Set.prototype.has = function (value) { return this._map.has(value); };
                Set.prototype.add = function (value) { return this._map.set(value, value), this; };
                Set.prototype.delete = function (value) { return this._map.delete(value); };
                Set.prototype.clear = function () { this._map.clear(); };
                Set.prototype.keys = function () { return this._map.keys(); };
                Set.prototype.values = function () { return this._map.values(); };
                Set.prototype.entries = function () { return this._map.entries(); };
                Set.prototype["@@iterator"] = function () { return this.keys(); };
                Set.prototype[iteratorSymbol] = function () { return this.keys(); };
                return Set;
            }());
        }
function CreateSetPolyfill() {
            return  (function () {
                function Set() {
                    this._map = new _Map();
                }
                Object.defineProperty(Set.prototype, "size", {
                    get: function () { return this._map.size; },
                    enumerable: true,
                    configurable: true
                });
                Set.prototype.has = function (value) { return this._map.has(value); };
                Set.prototype.add = function (value) { return this._map.set(value, value), this; };
                Set.prototype.delete = function (value) { return this._map.delete(value); };
                Set.prototype.clear = function () { this._map.clear(); };
                Set.prototype.keys = function () { return this._map.keys(); };
                Set.prototype.values = function () { return this._map.values(); };
                Set.prototype.entries = function () { return this._map.entries(); };
                Set.prototype["@@iterator"] = function () { return this.keys(); };
                Set.prototype[iteratorSymbol] = function () { return this.keys(); };
                return Set;
            }());
        }
function CreateSetPolyfill ( ) { return /** @class */ ( function ( ) { function Set ( ) { this . _map = new _Map ( ) ; } Object . defineProperty ( Set . prototype , "size" , { get : function ( ) { return this . _map . size ; } , enumerable : true , configurable : true } ) ; Set . prototype . has = function ( value ) { return this . _map . has ( value ) ; } ; Set . prototype . add = function ( value ) { return this . _map . set ( value , value ) , this ; } ; Set . prototype . delete = function ( value ) { return this . _map . delete ( value ) ; } ; Set . prototype . clear = function ( ) { this . _map . clear ( ) ; } ; Set . prototype . keys = function ( ) { return this . _map . keys ( ) ; } ; Set . prototype . values = function ( ) { return this . _map . values ( ) ; } ; Set . prototype . entries = function ( ) { return this . _map . entries ( ) ; } ; Set . prototype [ "@@iterator" ] = function ( ) { return this . keys ( ) ; } ; Set . prototype [ iteratorSymbol ] = function ( ) { return this . keys ( ) ; } ; return Set ; } ( ) ) ; }
naive Set shim
naive Set shim