This question evaluates understanding of object-oriented design and the iterator pattern, including manual interface definition, concrete iterator implementations, traversal behavior, performance considerations, and the ability to produce unit tests.

Implement an iterator from scratch in a blank coding environment.
Define the iterator interface manually.
Implement two concrete iterator classes that satisfy three follow-up requirements (e.g., additional traversal features or performance guarantees).
Provide unit tests to validate the implementation.