Iterator<K> () { return new Iterator<K>() { final Iterator<K> it = myDelegate.iterator(); @Override public boolean hasNext() { return it.hasNext(); } @Override public K next() { return unwrap(it.next()); } @Override public void remove() { it.remove(); } }; }