
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.