Provides a higher layer of abstraction for using extended functionality at 'functional' package.
An StatefulIterator is just an Iterator that needs to track some kind of state for determining if it has next values or not.
An StatelessIterator is just an Iterator that has no need to track its state for determining if it has next values or not.