code: public O returns(TypeInformation<OUT> typeInfo) {
  		requireNonNull(typeInfo, "TypeInformation must not be null");
  
  		fillInType(typeInfo);
  		@SuppressWarnings("unchecked")
  		O returnType = (O) this;
  		return returnType;
  	}
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>In most cases, the methods {@link #returns(Class)} and {@link #returns(TypeHint)}
  are preferable.
  
  @param typeInfo The type information for the returned data type.
  @return This operator using the given type information for the return type.