code: public static <T> Iterator<T> reverse(Iterator<T> self) {
          return new ReverseListIterator<T>(toList(self));
      }
docs: Reverses the iterator. The original iterator will become
  exhausted of elements after determining the reversed values.
  A new iterator for iterating through the reversed values is returned.
  
  @param self an Iterator
  @return a reversed Iterator
  @since 1.5.5