@Override
  public Object clone() {
    List<String> outputColumnNames = new ArrayList<>();
    outputColumnNames.addAll(this.outputColumnNames);
    List<ExprNodeDesc> keys = new ArrayList<>();
    keys.addAll(this.keys);
    List<AggregationDesc> aggregators = new ArrayList<>();
    aggregators.addAll(this.aggregators);
    List<Long> listGroupingSets = new ArrayList<>();
    listGroupingSets.addAll(this.listGroupingSets);
    return new GroupByDesc(this.mode, outputColumnNames, keys, aggregators,
        this.groupByMemoryUsage, this.memoryThreshold, this.minReductionHashAggr, this.minReductionHashAggrLowerBound,
        this.hashAggrFlushPercent, listGroupingSets, this.groupingSetsPresent,
        this.groupingSetPosition, this.isDistinct);
  }
Checks if this grouping is like distinct, which means that all non-distinct grouping
columns behave like they were distinct - for example min and max operators.
ql/src/java/org/apache/hadoop/hive/ql/plan/GroupByDesc.java