code: @Pure
  	public static <T, R> Iterable<R> map(Iterable<T> original, Function1<? super T, ? extends R> transformation) {
  		return Iterables.transform(original, new FunctionDelegate<T, R>(transformation));
  	}
docs: Returns an iterable that performs the given {@code transformation} for each element of {@code original} when
  requested. The mapping is done lazily. That is, subsequent iterations of the elements in the iterable will
  repeatedly apply the transformation.
  <p>
  The returned iterable's iterator supports {@code remove()} if the provided iterator does. After a successful
  {@code remove()} call, {@code original} no longer contains the corresponding element.
  </p>
  
  @param original
  the original iterable. May not be <code>null</code>.
  @param transformation
  the transformation. May not be <code>null</code>.
  @return an iterable that provides the result of the transformation. Never <code>null</code>.