@@ -0,0 +1,1232 @@
+package net.sf.kerner.utils.collections.impl;%0A%0Aimport java.util.Iterator;%0Aimport java.util.NoSuchElementException;%0A%0Apublic class IteratorPeek%3CT%3E implements Iterator%3CT%3E %7B%0A%0A    private final Iterator%3CT%3E iterator;%0A%0A    private T nextElement = null;%0A%0A    private boolean done = false;%0A%0A    public IteratorPeek(final Iterator%3CT%3E iterator) %7B%0A        super();%0A        this.iterator = iterator;%0A        performPeak();%0A    %7D%0A%0A    public synchronized boolean hasNext() %7B%0A        if (done) %7B%0A            return false;%0A        %7D%0A        return true;%0A    %7D%0A%0A    public synchronized T next() %7B%0A        if (done)%0A            throw new NoSuchElementException();%0A        final T result = nextElement;%0A        performPeak();%0A        return result;%0A    %7D%0A%0A    public synchronized T peek() %7B%0A        if (done)%0A            throw new NoSuchElementException();%0A        return nextElement;%0A    %7D%0A%0A    private void performPeak() %7B%0A        if (done) %7B%0A            return;%0A        %7D%0A        if (iterator.hasNext()) %7B%0A            nextElement = iterator.next();%0A        %7D else %7B%0A            done = true;%0A            nextElement = null;%0A        %7D%0A    %7D%0A%0A    public synchronized void remove() %7B%0A        throw new RuntimeException(%22not implemented yet%22);%0A    %7D%0A%0A%7D%0A

Introduce IteratorPeak.