function FluentIterator( iterator ) {
		if ( !( this instanceof FluentIterator ) ) {
			return new FluentIterator( iterator );
		}
		if ( !isIteratorLike( iterator ) ) {
			throw new TypeError( format( 'invalid argument. Must provide an iterator. Value: `%s`.', iterator ) );
		}
		setNonEnumerableReadOnly( this, '_source', iterator );
		setNonEnumerable( this, '_done', false );
		return this;
	}
Fluent interface iterator constructor.

@private
@constructor
@param {Iterator} iterator - source iterator
@throws {TypeError} must provide an iterator
@returns {FluentIterator} a "fluent" iterator