| 'use strict'; | 
| var call = require('../internals/function-call'); | 
| var anObject = require('../internals/an-object'); | 
| var getIteratorDirect = require('../internals/get-iterator-direct'); | 
| var getIteratorMethod = require('../internals/get-iterator-method'); | 
|   | 
| module.exports = function (obj, stringHandling) { | 
|   if (!stringHandling || typeof obj !== 'string') anObject(obj); | 
|   var method = getIteratorMethod(obj); | 
|   return getIteratorDirect(anObject(method !== undefined ? call(method, obj) : obj)); | 
| }; |