The iterator pattern