docs: public static <T> T reduce(Iterator<? extends T> iterator, Function2<? super T, ? super T, ? extends T> function) {
  		if (function == null)
  			throw new NullPointerException("function");
  		if (iterator.hasNext()) {
  			T result = iterator.next();
  			while (iterator.hasNext()) {
  				result = function.apply(result, iterator.next());
  			}
  			return result;
  		} else {
  			return null;
  		}
  	}