text: 'use strict';
  
  var callBound = require('call-bind/callBound');
  var $arrayPush = callBound('Array.prototype.push');
  
  var getIteratorMethod = require('../helpers/getIteratorMethod');
  var AdvanceStringIndex = require('./AdvanceStringIndex');
  var GetIterator = require('./GetIterator');
  var GetMethod = require('./GetMethod');
  var IsArray = require('./IsArray');
  var IteratorStep = require('./IteratorStep');
  var IteratorValue = require('./IteratorValue');
  var ToObject = require('./ToObject');
  var Type = require('./Type');
  var ES = {
  	AdvanceStringIndex: AdvanceStringIndex,
  	GetMethod: GetMethod,
  	IsArray: IsArray,
  	Type: Type
  };
  
  // https://262.ecma-international.org/7.0/#sec-iterabletoarraylike
  
  module.exports = function IterableToArrayLike(items) {
  	var usingIterator = getIteratorMethod(ES, items);
  	if (typeof usingIterator !== 'undefined') {
  		var iterator = GetIterator(items, usingIterator);
  		var values = [];
  		var next = true;
  		while (next) {
  			next = IteratorStep(iterator);
  			if (next) {
  				var nextValue = IteratorValue(next);
  				$arrayPush(values, nextValue);
  			}
  		}
  		return values;
  	}
  
  	return ToObject(items);
  };
  