@Override
    public void remove() {
      checkConcurrent();
      if (!canremove) {
        throw new IllegalStateException("Can not remove an "
                                        + "element unless either next() or previous() has been called "
                                        + "since the last remove()");
      }
      // we are removing the last entry returned by either next() or
      // previous().
      // the idea is to remove it, and pretend that we used to be at the
      // entry that happened *after* the removed entry.
      // so, get what would be the next entry (set at tmpcursor).
      // so call nextIndex to set tmpcursor to what would come after.
      filterlist.remove(cursor);
      forward = false;
      expectedmod = getModCount();

      canremove = false;
      canset = false;
    }
@Override
    public void remove()