code: public static <T> Iterator<T> getRandomIterator (Iterator<T> itr)
      {
          ArrayList<T> list = new ArrayList<T>();
          CollectionUtil.addAll(list, itr);
          java.util.Collections.shuffle(list);
          return getUnmodifiableIterator(list);
      }
docs: Get an Iterator that returns the same elements returned by the supplied Iterator, but in a
  completely random order.