code: public static <T> CloseableIterator<List<T>> partition(final CloseableIterator<T> iterator, final int size) {
          return wrap(Iterators.partition(iterator, size), iterator);
      }
docs: Divides a closeableiterator into unmodifiable sublists of the given size (the final
  list may be smaller). For example, partitioning a closeableiterator containing
  {@code [a, b, c, d, e]} with a partition size of 3 yields {@code
  [[a, b, c], [d, e]]} -- an outer iterator containing two inner lists of
  three and two elements, all in the original order.
  <p/>
  <p>The returned lists implement {@link java.util.RandomAccess}.