function next() {
		var v;
		if ( FLG ) {
			return {
				'done': true
			};
		}
		while ( true ) {
			t += 1;
			i += 1;
			if ( i >= n ) {
				v = iterator.next();
				if ( v.done ) {
					FLG = true;
					return v;
				}
				value = v.value; // cache value
				j += 1;
				n = fcn.call( thisArg, value, j, t );
				if ( !isInteger( n ) ) {
					throw new TypeError( format( 'invalid return value. Callback function must return an integer. Value: `%s`.', n ) );
				}
				i = 0; // reset the counter
				if ( n > 0 ) {
					// Return the newly cached value...
					break;
				}
			} else {
				// Return the cached value...
				break;
			}
		}
		return {
			'value': value,
			'done': false
		};
	}
Returns an iterator protocol-compliant object containing the next iterated value.

@private
@throws {TypeError} callback function must return an integer
@returns {Object} iterator protocol-compliant object