code: @PublicEvolving
  	public <R> SingleOutputStreamOperator<R> process(ProcessFunction<T, R> processFunction) {
  
  		TypeInformation<R> outType = TypeExtractor.getUnaryOperatorReturnType(
  			processFunction,
  			ProcessFunction.class,
  			0,
  			1,
  			TypeExtractor.NO_INDEX,
  			getType(),
  			Utils.getCallLocationName(),
  			true);
  
  		return process(processFunction, outType);
  	}
docs: Applies the given {@link ProcessFunction} on the input stream, thereby
  creating a transformed output stream.
  
  <p>The function will be called for every element in the input streams and can produce zero
  or more output elements.
  
  @param processFunction The {@link ProcessFunction} that is called for each element
  in the stream.
  
  @param <R> The type of elements emitted by the {@code ProcessFunction}.
  
  @return The transformed {@link DataStream}.