public HashAggregationOperator( OperatorContext operatorContext, List<Type> groupByTypes, List<Integer> groupByChannels, Step step, List<AccumulatorFactory> accumulatorFactories, Optional<Integer> maskChannel, Optional<Integer> hashChannel, int expectedGroups) { this.operatorContext = requireNonNull(operatorContext, "operatorContext is null"); requireNonNull(step, "step is null"); requireNonNull(accumulatorFactories, "accumulatorFactories is null"); requireNonNull(operatorContext, "operatorContext is null"); this.groupByTypes = ImmutableList.copyOf(groupByTypes); this.groupByChannels = ImmutableList.copyOf(groupByChannels); this.accumulatorFactories = ImmutableList.copyOf(accumulatorFactories); this.maskChannel = requireNonNull(maskChannel, "maskChannel is null"); this.hashChannel = requireNonNull(hashChannel, "hashChannel is null"); this.step = step; this.expectedGroups = expectedGroups; this.types = toTypes(groupByTypes, step, accumulatorFactories, hashChannel); }