code: public O returns(Class<OUT> typeClass) {
  		requireNonNull(typeClass, "type class must not be null");
  
  		try {
  			return returns(TypeInformation.of(typeClass));
  		}
  		catch (InvalidTypesException e) {
  			throw new InvalidTypesException("Cannot infer the type information from the class alone." +
  					"This is most likely because the class represents a generic type. In that case," +
  					"please use the 'returns(TypeHint)' method instead.", e);
  		}
  	}
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>Classes can be used as type hints for non-generic types (classes without generic parameters),
  but not for generic types like for example Tuples. For those generic types, please
  use the {@link #returns(TypeHint)} method.
  
  <p>Use this method the following way:
  <pre>{@code
  DataSet<String[]> result =
  data1.join(data2).where("id").equalTo("fieldX")
  .with(new JoinFunctionWithNonInferrableReturnType())
  .returns(String[].class);
  }</pre>
  
  @param typeClass The class of the returned data type.
  @return This operator with the type information corresponding to the given type class.