code: public static <R, E> Iterator<R> transform(Iterator<E> iterator, Function<E, R> function) {
          return new TransformingIterator<>(iterator, function);
      }
docs: Creates an iterator yielding the result of the transformation applied by
  the function on the elements of the source iterator. This transformation
  is evaluated lazily when the resulting iterator is consumed. E.g:
  <code>
  transform([1,2,3], toStringTransformer) -> ["1", "2", "3"]
  </code>
  
  @param <R> the result iterator element type parameter
  @param <E> the input iterator element type parameter
  @param iterator the iterator where elements are fetched from
  @param function a function used to transform each element
  @return the transformed iterator