code: public DataSink<T> output(OutputFormat<T> outputFormat) {
  		Preconditions.checkNotNull(outputFormat);
  
  		// configure the type if needed
  		if (outputFormat instanceof InputTypeConfigurable) {
  			((InputTypeConfigurable) outputFormat).setInputType(getType(), context.getConfig());
  		}
  
  		DataSink<T> sink = new DataSink<>(this, outputFormat, getType());
  		this.context.registerDataSink(sink);
  		return sink;
  	}
docs: Emits a DataSet using an {@link OutputFormat}. This method adds a data sink to the program.
  Programs may have multiple data sinks. A DataSet may also have multiple consumers (data sinks
  or transformations) at the same time.
  
  @param outputFormat The OutputFormat to process the DataSet.
  @return The DataSink that processes the DataSet.
  
  @see OutputFormat
  @see DataSink