Since remove() is not supported, I wonder if extending java.util.Iterator is the right thing to do here. Would having an Iterator interface with no remove() in it be better? That way we avoid misusage on the client side by not having the remove() method at all in the API. WDYT?