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