code: @PublicEvolving
  	public <R> SingleOutputStreamOperator<R> transform(String operatorName, TypeInformation<R> outTypeInfo, OneInputStreamOperator<T, R> operator) {
  
  		// read the output type of the input Transform to coax out errors about MissingTypeInfo
  		transformation.getOutputType();
  
  		OneInputTransformation<T, R> resultTransform = new OneInputTransformation<>(
  				this.transformation,
  				operatorName,
  				operator,
  				outTypeInfo,
  				environment.getParallelism());
  
  		@SuppressWarnings({ "unchecked", "rawtypes" })
  		SingleOutputStreamOperator<R> returnStream = new SingleOutputStreamOperator(environment, resultTransform);
  
  		getExecutionEnvironment().addOperator(resultTransform);
  
  		return returnStream;
  	}
docs: Method for passing user defined operators along with the type
  information that will transform the DataStream.
  
  @param operatorName
  name of the operator, for logging purposes
  @param outTypeInfo
  the output type of the operator
  @param operator
  the object containing the transformation logic
  @param <R>
  type of the return stream
  @return the data stream constructed