code: public TableOperation create(
  			SetTableOperationType type,
  			TableOperation left,
  			TableOperation right,
  			boolean all) {
  		failIfStreaming(type, all);
  		validateSetOperation(type, left, right);
  		return new SetTableOperation(left, right, type, all);
  	}
docs: Creates a valid algebraic operation.
  
  @param type type of operation to create
  @param left first relational operation of the operation
  @param right second relational operation of the operation
  @param all flag defining how duplicates should be handled
  @return creates a valid algebraic operation