/** Answer an ExtendedIterator wrapped round <code>it</code> which does not permit <code>.remove()</code> even if <code>it</code> does. */ public static <T> WrappedIterator<T> createNoRemove( Iterator<T> it ) { return new WrappedIterator<T>( it, true ); }
/** Answer an ExtendedIterator returning the elements of <code>it</code>. If <code>it</code> is itself an ExtendedIterator, return that; otherwise wrap <code>it</code>. */ public static <T> ExtendedIterator<T> create( Iterator<T> it ) { return it instanceof ExtendedIterator<?> ? (ExtendedIterator<T>) it : new WrappedIterator<T>( it, false ); }