@Override
    public T next() {
        if (hasNext()) {
            T ans = nextPeek;
            nextPeek = iterator.next();
            return ans;
        }
        throw new NoSuchElementException();
    }