docs: @Deprecated
  	public <L, R> SingleOutputStreamOperator<Either<L, R>> select(
  			final PatternTimeoutFunction<T, L> patternTimeoutFunction,
  			final PatternSelectFunction<T, R> patternSelectFunction) {
  
  		final TypeInformation<R> mainTypeInfo = TypeExtractor.getUnaryOperatorReturnType(
  			patternSelectFunction,
  			PatternSelectFunction.class,
  			0,
  			1,
  			TypeExtractor.NO_INDEX,
  			builder.getInputType(),
  			null,
  			false);
  
  		final TypeInformation<L> timeoutTypeInfo = TypeExtractor.getUnaryOperatorReturnType(
  			patternTimeoutFunction,
  			PatternTimeoutFunction.class,
  			0,
  			1,
  			TypeExtractor.NO_INDEX,
  			builder.getInputType(),
  			null,
  			false);
  
  		final TypeInformation<Either<L, R>> outTypeInfo = new EitherTypeInfo<>(timeoutTypeInfo, mainTypeInfo);
  
  		final OutputTag<L> outputTag = new OutputTag<>(UUID.randomUUID().toString(), timeoutTypeInfo);
  
  		final PatternProcessFunction<T, R> processFunction =
  			fromSelect(builder.clean(patternSelectFunction))
  				.withTimeoutHandler(outputTag, builder.clean(patternTimeoutFunction))
  				.build();
  
  		final SingleOutputStreamOperator<R> mainStream = process(processFunction, mainTypeInfo);
  		final DataStream<L> timedOutStream = mainStream.getSideOutput(outputTag);
  
  		return mainStream
  			.connect(timedOutStream)
  			.map(new CoMapTimeout<>())
  			.returns(outTypeInfo);
  	}