code: @SuppressWarnings({ "unchecked", "rawtypes" })
  	@Override
  	public T reduce(T value1, T value2) throws Exception {
  
  		for (int position : fields) {
  			// Save position of compared key
  			// Get both values - both implement comparable
  			Comparable comparable1 = value1.getFieldNotNull(position);
  			Comparable comparable2 = value2.getFieldNotNull(position);
  
  			// Compare values
  			int comp = comparable1.compareTo(comparable2);
  			// If comp is smaller than 0 comparable 1 is smaller.
  			// Return the smaller value.
  			if (comp < 0) {
  				return value1;
  			} else if (comp > 0) {
  				return value2;
  			}
  		}
  		return value1;
  	}
docs: Reduce implementation, returns smaller tuple or value1 if both tuples are
  equal. Comparison highly depends on the order and amount of fields chosen
  as indices. All given fields (at construction time) are checked in the same
  order as defined (at construction time). If both tuples are equal in one
  index, the next index is compared. Or if no next index is available value1
  is returned.
  The tuple which has a smaller value at one index will be returned.