public function next()
{
if (!$this->startedIterating) {
$this->ensureIterator();
$this->startedIterating = true;
} else {
if ($this->cursorNeedsAdvancing) {
$this->ensureIterator()->next();
}
$this->cursorNeedsAdvancing = true;
$this->position++;
}
return $this->storeIteratorState();
}