Class LazyIteratorChain<E>

An LazyIteratorChain is an Iterator that wraps a number of Iterators in a lazy manner.

This class makes multiple iterators look like one to the caller. When any
method from the Iterator interface is called, the LazyIteratorChain will delegate
to a single underlying Iterator. The LazyIteratorChain will invoke the Iterators
in sequence until all Iterators are exhausted.

The Iterators are provided by nextIterator(int) which has to be overridden by
sub-classes and allows to lazily create the Iterators as they are accessed:

remove

Removes from the underlying collection the last element returned by the Iterator.

As with next() and hasNext(), this method calls remove() on the underlying Iterator.
Therefore, this method may throw an UnsupportedOperationException if the underlying
Iterator does not support this method.