code: public <R> CoGroupOperator.CoGroupOperatorSets<T, R> coGroup(DataSet<R> other) {
  		return new CoGroupOperator.CoGroupOperatorSets<>(this, other);
  	}
docs: Initiates a CoGroup transformation.
  
  <p>A CoGroup transformation combines the elements of
  two {@link DataSet DataSets} into one DataSet. It groups each DataSet individually on a key and
  gives groups of both DataSets with equal keys together into a {@link org.apache.flink.api.common.functions.RichCoGroupFunction}.
  If a DataSet has a group with no matching key in the other DataSet, the CoGroupFunction
  is called with an empty group for the non-existing group.
  
  <p>The CoGroupFunction can iterate over the elements of both groups and return any number
  of elements including none.
  
  <p>This method returns a {@link CoGroupOperatorSets} on which one of the {@code where} methods
  can be called to define the join key of the first joining (i.e., this) DataSet.
  
  @param other The other DataSet of the CoGroup transformation.
  @return A CoGroupOperatorSets to continue the definition of the CoGroup transformation.
  
  @see CoGroupOperatorSets
  @see CoGroupOperator
  @see DataSet