/** Answer true iff there is at least one more acceptable object. [Stores reference into <code>current</code>, sets <code>canRemove</code> false; answer preserved in `hasCurrent`] */ @Override public boolean hasNext() { while (!hasCurrent && super.hasNext()) hasCurrent = accept( current = super.next() ); canRemove = false; return hasCurrent; }