const SYMBOL_SUPPORTED = typeof Symbol === 'function';

export const ITERATOR_SYMBOL = SYMBOL_SUPPORTED ? Symbol.iterator : '@@iterator';
export const ITERATOR_FUNCTION = SYMBOL_SUPPORTED ? v => [v][Symbol.iterator]() : fakeIterator;

function fakeIterator(v) {
	var iterated = false;

	return {
		next: function() {
			var entry = { value: iterated ? void 0 : v, done: iterated };
			iterated = true;
			return entry;
		}
	};
}

@@ -187,16 +187,117 @@
 D ? 
-v =%3E %5Bv%5D
+realIterator : fakeIterator;%0A%0Afunction realIterator(v) %7B%0A%09return typeof v%5BSymbol.iterator%5D === 'function' ? v
 %5BSym
@@ -314,29 +314,41 @@
 or%5D() : 
-fakeI
+%5Bv%5D%5BSymbol.i
 terator
-;
+%5D();%0A%7D
 %0A%0Afuncti

use inner iterator if possible