docs: public static <T> String join(Iterator<T> iterator, CharSequence separator,
  			Functions.Function1<? super T, ? extends CharSequence> function) {
  		if (separator == null)
  			throw new NullPointerException("separator");
  		if (function == null)
  			throw new NullPointerException("function");
  		StringBuilder result = new StringBuilder();
  		while (iterator.hasNext()) {
  			T next = iterator.next();
  			CharSequence elementToString = function.apply(next);
  			result.append(elementToString);
  			if (iterator.hasNext())
  				result.append(separator);
  		}
  		return result.toString();
  	}