code: public static <T> String join(Iterable<T> iterable, CharSequence separator,
  			Functions.Function1<? super T, ? extends CharSequence> function) {
  		return IteratorExtensions.join(iterable.iterator(), separator, function);
  	}
docs: Returns the concatenated string representation of the elements in the given iterable. The {@code function} is
  used to compute the string for each element. The {@code separator} is used to between each pair of entries in the
  input. The string <code>null</code> is used if the function yields <code>null</code> as the string representation
  for an entry.
  
  @param iterable
  the iterable. May not be <code>null</code>.
  @param separator
  the separator. May not be <code>null</code>.
  @param function
  the function that is used to compute the string representation of a single element. May not be
  <code>null</code>.
  @return the string representation of the iterable's elements. Never <code>null</code>.