docs: @Override
  	public void prepare() throws Exception {
  		final TaskConfig config = this.taskContext.getTaskConfig();
  		this.strategy = config.getDriverStrategy();
  
  		switch (this.strategy) {
  			case ALL_GROUP_REDUCE_COMBINE:
  				if (!(this.taskContext.getStub() instanceof GroupCombineFunction)) {
  					throw new Exception("Using combiner on a UDF that does not implement the combiner interface " + GroupCombineFunction.class.getName());
  				}
  			case ALL_GROUP_REDUCE:
  			case ALL_GROUP_COMBINE:
  				break;
  			default:
  				throw new Exception("Unrecognized driver strategy for AllGroupReduce driver: " + this.strategy.name());
  		}
  
  		this.serializer = this.taskContext.<IT>getInputSerializer(0).getSerializer();
  		this.input = this.taskContext.getInput(0);
  
  		ExecutionConfig executionConfig = taskContext.getExecutionConfig();
  		this.objectReuseEnabled = executionConfig.isObjectReuseEnabled();
  
  		if (LOG.isDebugEnabled()) {
  			LOG.debug("AllGroupReduceDriver object reuse: " + (this.objectReuseEnabled ? "ENABLED" : "DISABLED") + ".");
  		}
  	}