/** * Factory method for generating an iterator that is guaranteed * only to return one instance of every result from the wrapped * iterator <code>it</code>. * @param it An iterator to wrap * @return A iterator that returns the elements of the wrapped * iterator exactly once. If <code>it</code> is already a unique * extended iteator, it is not further wrapped. */ public static <T> ExtendedIterator<T> create( Iterator<T> it ) { return (it instanceof UniqueExtendedIterator<?>) ? ((UniqueExtendedIterator<T>) it) : new UniqueExtendedIterator<T>( it ); }