code: public <L, R> SingleOutputStreamOperator<R> select(
  			final OutputTag<L> timedOutPartialMatchesTag,
  			final PatternTimeoutFunction<T, L> patternTimeoutFunction,
  			final PatternSelectFunction<T, R> patternSelectFunction) {
  
  		final TypeInformation<R> rightTypeInfo = TypeExtractor.getUnaryOperatorReturnType(
  			patternSelectFunction,
  			PatternSelectFunction.class,
  			0,
  			1,
  			TypeExtractor.NO_INDEX,
  			builder.getInputType(),
  			null,
  			false);
  
  		return select(
  			timedOutPartialMatchesTag,
  			patternTimeoutFunction,
  			rightTypeInfo,
  			patternSelectFunction);
  	}
docs: Applies a select function to the detected pattern sequence. For each pattern sequence the
  provided {@link PatternSelectFunction} is called. The pattern select function can produce
  exactly one resulting element.
  
  <p>Applies a timeout function to a partial pattern sequence which has timed out. For each
  partial pattern sequence the provided {@link PatternTimeoutFunction} is called. The pattern
  timeout function can produce exactly one resulting element.
  
  <p>You can get the stream of timed-out data resulting from the
  {@link SingleOutputStreamOperator#getSideOutput(OutputTag)} on the
  {@link SingleOutputStreamOperator} resulting from the select operation
  with the same {@link OutputTag}.
  
  @param timedOutPartialMatchesTag {@link OutputTag} that identifies side output with timed out patterns
  @param patternTimeoutFunction The pattern timeout function which is called for each partial
  pattern sequence which has timed out.
  @param patternSelectFunction The pattern select function which is called for each detected
  pattern sequence.
  @param <L> Type of the resulting timeout elements
  @param <R> Type of the resulting elements
  @return {@link DataStream} which contains the resulting elements with the resulting timeout
  elements in a side output.