text: 'use strict';
  // https://github.com/tc39/proposal-iterator-helpers
  var $ = require('../internals/export');
  var global = require('../internals/global');
  var anInstance = require('../internals/an-instance');
  var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
  var fails = require('../internals/fails');
  var has = require('../internals/has');
  var wellKnownSymbol = require('../internals/well-known-symbol');
  var IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;
  var IS_PURE = require('../internals/is-pure');
  
  var TO_STRING_TAG = wellKnownSymbol('toStringTag');
  
  var NativeIterator = global.Iterator;
  
  // FF56- have non-standard global helper `Iterator`
  var FORCED = IS_PURE
    || typeof NativeIterator != 'function'
    || NativeIterator.prototype !== IteratorPrototype
    // FF44- non-standard `Iterator` passes previous tests
    || !fails(function () { NativeIterator({}); });
  
  var IteratorConstructor = function Iterator() {
    anInstance(this, IteratorConstructor);
  };
  
  if (!has(IteratorPrototype, TO_STRING_TAG)) {
    createNonEnumerableProperty(IteratorPrototype, TO_STRING_TAG, 'Iterator');
  }
  
  if (FORCED || !has(IteratorPrototype, 'constructor') || IteratorPrototype.constructor === Object) {
    createNonEnumerableProperty(IteratorPrototype, 'constructor', IteratorConstructor);
  }
  
  IteratorConstructor.prototype = IteratorPrototype;
  
  $({ global: true, forced: FORCED }, {
    Iterator: IteratorConstructor
  });
  