code: public static <T> Iterator<T> unique(Iterator<T> self) {
          return toList((Iterable<T>) unique(toList(self))).listIterator();
      }
docs: Returns an iterator equivalent to this iterator with all duplicated items removed
  by using the default 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 the modified Iterator
  @since 1.5.5