code: public static <R, E> Iterator<R> transform(Iterable<E> iterable, Function<E, R> function) {
          dbc.precondition(iterable != null, "cannot call transform with a null iterable");
          return new TransformingIterator<>(iterable.iterator(), function);
      }
docs: Creates an iterator yielding the result of the transformation applied by
  the function on the elements of the source iterable. 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 iterable element type parameter
  @param iterable the iterable where elements are fetched from
  @param function a function used to transform each element
  @return the transformed iterator