/** Answer the next acceptable object from the base iterator. The redundant test of `hasCurrent` appears to make a detectable speed difference. Crazy. */ @Override public T next() { if (hasCurrent || hasNext()) { canRemove = true; hasCurrent = false; return current; } throw new NoSuchElementException(); } }