public function next() {
        $this->getCurrentIterator()->next();
        if (!$this->getCurrentIterator()->valid()) {
            $this->moveToNextValidIterator();
        }
        return $this->current();
    }