code: public static <T> CloseableIterator<T> wrap(CloseableIterator<T> iterator, AutoCloseable... otherCloseables) {
      return new CloseablesIteratorWrapper<>(iterator, otherCloseables);
    }
docs: Wraps a {@code CloseableIterator} and optionally other instances of {@code AutoCloseable} that must be closed
  at the same time. The wrapped iterator is closed first then the other {@code AutoCloseable} in the defined order.
  
  @throws IllegalArgumentException if the parameter {@code otherCloseables} contains the wrapped iterator