code: public SingleOutputStreamOperator<T> returns(TypeHint<T> typeHint) {
  		requireNonNull(typeHint, "TypeHint must not be null");
  
  		try {
  			return returns(TypeInformation.of(typeHint));
  		}
  		catch (InvalidTypesException e) {
  			throw new InvalidTypesException("Cannot infer the type information from the type hint. " +
  					"Make sure that the TypeHint does not use any generic type variables.");
  		}
  	}
docs: Adds a type information hint about the return type of this operator. This method
  can be used in cases where Flink cannot determine automatically what the produced
  type of a function is. That can be the case if the function uses generic type variables
  in the return type that cannot be inferred from the input type.
  
  <p>Use this method the following way:
  <pre>{@code
  DataStream<Tuple2<String, Double>> result =
  stream.flatMap(new FunctionWithNonInferrableReturnType())
  .returns(new TypeHint<Tuple2<String, Double>>(){});
  }</pre>
  
  @param typeHint The type hint for the returned data type.
  @return This operator with the type information corresponding to the given type hint.