| 'use strict'; | 
| var getBuiltIn = require('../internals/get-built-in'); | 
|   | 
| var createSetLike = function (size) { | 
|   return { | 
|     size: size, | 
|     has: function () { | 
|       return false; | 
|     }, | 
|     keys: function () { | 
|       return { | 
|         next: function () { | 
|           return { done: true }; | 
|         } | 
|       }; | 
|     } | 
|   }; | 
| }; | 
|   | 
| var createSetLikeWithInfinitySize = function (size) { | 
|   return { | 
|     size: size, | 
|     has: function () { | 
|       return true; | 
|     }, | 
|     keys: function () { | 
|       throw new Error('e'); | 
|     } | 
|   }; | 
| }; | 
|   | 
| module.exports = function (name, callback) { | 
|   var Set = getBuiltIn('Set'); | 
|   try { | 
|     new Set()[name](createSetLike(0)); | 
|     try { | 
|       // late spec change, early WebKit ~ Safari 17.0 beta implementation does not pass it | 
|       // https://github.com/tc39/proposal-set-methods/pull/88 | 
|       new Set()[name](createSetLike(-1)); | 
|       return false; | 
|     } catch (error2) { | 
|       if (!callback) return true; | 
|       // early V8 implementation bug | 
|       // https://issues.chromium.org/issues/351332634 | 
|       try { | 
|         new Set()[name](createSetLikeWithInfinitySize(-Infinity)); | 
|         return false; | 
|       } catch (error) { | 
|         var set = new Set(); | 
|         set.add(1); | 
|         set.add(2); | 
|         return callback(set[name](createSetLikeWithInfinitySize(Infinity))); | 
|       } | 
|     } | 
|   } catch (error) { | 
|     return false; | 
|   } | 
| }; |