code: @Override
  	public void combine(Iterator<IN> values, Collector<IN> out) throws Exception {
  		@SuppressWarnings("unchecked")
  		Collector<OUT> c = (Collector<OUT>) out;
  		reduce(values, c);
  	}
docs: The combine methods pre-reduces elements. It may be called on subsets of the data
  before the actual reduce function. This is often helpful to lower data volume prior
  to reorganizing the data in an expensive way, as might be required for the final
  reduce function.
  <p>
  This method is only ever invoked when the subclass of {@link GroupReduceFunction}
  adds the {@link Combinable} annotation, or if the <i>combinable</i> flag is set when defining
  the <i>reduceGroup<i> operation via
  {@link eu.stratosphere.api.java.operators.ReduceGroupOperator#setCombinable(boolean)}.
  <p>
  Since the reduce function will be called on the result of this method, it is important that this
  method returns the same data type as it consumes. By default, this method only calls the
  {@link #reduce(Iterator, Collector)} method. If the behavior in the pre-reducing is different
  from the final reduce function (for example because the reduce function changes the data type),
  this method must be overwritten, or the execution will fail.
  
  @param values The iterator returning the group of values to be reduced.
  @param out The collector to emit the returned values.
  
  @throws Exception This method may throw exceptions. Throwing an exception will cause the operation
  to fail and may trigger recovery.