public function rewind()
    {
        // We can recreate the cursor to allow it to be rewound
        $this->reset();
        $this->startedIterating = true;
        $this->position = 0;
        $this->ensureIterator()->rewind();
        $this->storeIteratorState();
    }