'use strict'; 
 | 
var getBuiltIn = require('../internals/get-built-in'); 
 | 
var isCallable = require('../internals/is-callable'); 
 | 
var isIterable = require('../internals/is-iterable'); 
 | 
var isObject = require('../internals/is-object'); 
 | 
  
 | 
var Set = getBuiltIn('Set'); 
 | 
  
 | 
var isSetLike = function (it) { 
 | 
  return isObject(it) 
 | 
    && typeof it.size == 'number' 
 | 
    && isCallable(it.has) 
 | 
    && isCallable(it.keys); 
 | 
}; 
 | 
  
 | 
// fallback old -> new set methods proposal arguments 
 | 
module.exports = function (it) { 
 | 
  if (isSetLike(it)) return it; 
 | 
  return isIterable(it) ? new Set(it) : it; 
 | 
}; 
 |