Internal implementation class for creating a Spliterator from an Iterator. This mimics the logic from java.util.Spliterators.IteratorSpliterator.
CONCURRENT: Source can be safely modified concurrently.
DISTINCT: No two elements are equal (x.equals(y) is false).
x.equals(y)
IMMUTABLE: Source cannot be structurally modified during traversal.
NONNULL: Encountered elements will not be null.
ORDERED: Encounter order is defined and maintained.
SIZED: estimateSize() is an exact count before traversal/split.
SORTED: Encounter order follows a defined sort order (implies ORDERED).
SUBSIZED: All spliterators resulting from trySplit() are SIZED and SUBSIZED.