code: public static <T, K> KeyedStream<T, K> reinterpretAsKeyedStream(
  		DataStream<T> stream,
  		KeySelector<T, K> keySelector) {
  
  		return reinterpretAsKeyedStream(
  			stream,
  			keySelector,
  			TypeExtractor.getKeySelectorTypes(keySelector, stream.getType()));
  	}
docs: Reinterprets the given {@link DataStream} as a {@link KeyedStream}, which extracts keys with the given
  {@link KeySelector}.
  
  <p>IMPORTANT: For every partition of the base stream, the keys of events in the base stream must be
  partitioned exactly in the same way as if it was created through a {@link DataStream#keyBy(KeySelector)}.
  
  @param stream      The data stream to reinterpret. For every partition, this stream must be partitioned exactly
  in the same way as if it was created through a {@link DataStream#keyBy(KeySelector)}.
  @param keySelector Function that defines how keys are extracted from the data stream.
  @param <T>         Type of events in the data stream.
  @param <K>         Type of the extracted keys.
  @return The reinterpretation of the {@link DataStream} as a {@link KeyedStream}.