code: public ReduceOperator<T> reduce(ReduceFunction<T> reducer) {
  		if (reducer == null) {
  			throw new NullPointerException("Reduce function must not be null.");
  		}
  		return new ReduceOperator<T>(this, reducer);
  	}
docs: Applies a Reduce transformation on a grouped {@link DataSet}.<br/>
  For each group, the transformation consecutively calls a {@link ReduceFunction}
  until only a single element for each group remains.
  A ReduceFunction combines two elements into one new element of the same type.
  
  @param reducer The ReduceFunction that is applied on each group of the DataSet.
  @return A ReduceOperator that represents the reduced DataSet.
  
  @see ReduceFunction
  @see ReduceOperator
  @see DataSet