code: @Override
    public void remove() {
      Assert.state(nextCalled.compareAndSet(true, false), "next was not called before remove");
      int iteratorIndexForRemove = (currentIteratorIndex - 1);
      iteratorIndexForRemove = (iteratorIndexForRemove < 0 ? iteratorList.size() - 1 : iteratorIndexForRemove);
      iteratorList.get(iteratorIndexForRemove).remove();
    }
docs: Removes the current element in the iteration.
  
  @throws java.lang.IllegalStateException if the next method has not yet been called, or the remove method
  has already been called after the last call to the next method.
  @see java.util.Iterator#remove()