Image source: https://refactoring.guru/
Iterable<E>
Iterator<E> iterator()
<<interface>>
Iterator<E>
boolean hasNext() E next() void remove()
returns new MyCollectionIterator<E>()
MyCollection<E>
MyCollectionIterator<E>
By Felix Grund
Instructor @ UBC