code: public static <T> Iterator<T> unique(Iterator<T> self) {
          return uniqueItems(new IteratorIterableAdapter<T>(self)).listIterator();
      }
docs: Returns an iterator equivalent to this iterator with all duplicated items removed
  by using Groovy's default number-aware comparator. The original iterator will become
  exhausted of elements after determining the unique values. A new iterator
  for the unique values will be returned.
  
  @param self an Iterator
  @return a new Iterator of the unique items from the original iterator
  @since 1.5.5