'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; 
 | 
  } 
 | 
}; 
 |