code: public <X> DataSource<X> createInput(InputFormat<X, ?> inputFormat, TypeInformation<X> producedType) {
  		if (inputFormat == null) {
  			throw new IllegalArgumentException("InputFormat must not be null.");
  		}
  		
  		if (producedType == null) {
  			throw new IllegalArgumentException("Produced type information must not be null.");
  		}
  		
  		return new DataSource<X>(this, inputFormat, producedType);
  	}
docs: Generic method to create an input DataSet with in {@link InputFormat}. The DataSet will not be
  immediately created - instead, this method returns a DataSet that will be lazily created from
  the input format once the program is executed.
  <p>
  The data set is typed to the given TypeInformation. This method is intended for input formats that
  where the return type cannot be determined by reflection analysis, and that do not implement the
  {@link ResultTypeQueryable} interface.
  
  @param inputFormat The input format used to create the data set.
  @return A DataSet that represents the data created by the input format.
  
  @see #createInput(InputFormat)