P: has_next() no longer mandatory / Iterator.reset