/** * Removes from the underlying collection the last * element returned by this iterator (optional operation). * This method can be called only once per call to next(). * The behavior of an iterator is unspecified if the underlying * collection is modified while the iteration is in progress in any * way other than by calling this method. * @return boolean */ public function remove() { if ($this->canRemove) { $removed = $this->set->remove($this->array[$this->index--]); $this->array = $this->set->toArray(); $this->canRemove = false; } else { throw new IllegalStateException(); } }