code: @PublicEvolving
  	public <R> SingleOutputStreamOperator<R> process(KeyedProcessFunction<KEY, T, R> keyedProcessFunction) {
  
  		TypeInformation<R> outType = TypeExtractor.getUnaryOperatorReturnType(
  				keyedProcessFunction,
  				KeyedProcessFunction.class,
  				1,
  				2,
  				TypeExtractor.NO_INDEX,
  				getType(),
  				Utils.getCallLocationName(),
  				true);
  
  		return process(keyedProcessFunction, outType);
  	}
docs: Applies the given {@link KeyedProcessFunction} 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. Contrary to the {@link DataStream#flatMap(FlatMapFunction)}
  function, this function can also query the time and set timers. When reacting to the firing
  of set timers the function can directly emit elements and/or register yet more timers.
  
  @param keyedProcessFunction The {@link KeyedProcessFunction} that is called for each element in the stream.
  
  @param <R> The type of elements emitted by the {@code KeyedProcessFunction}.
  
  @return The transformed {@link DataStream}.