function Aggregate$1(params) {
    Transform.call(this, null, params);
    this._adds = []; // array of added output tuples
    this._mods = []; // array of modified output tuples
    this._alen = 0; // number of active added tuples
    this._mlen = 0; // number of active modified tuples
    this._drop = true; // should empty aggregation cells be removed
    this._cross = false; // produce full cross-product of group-by values

    this._dims = []; // group-by dimension accessors
    this._dnames = []; // group-by dimension names

    this._measures = []; // collection of aggregation monoids
    this._countOnly = false; // flag indicating only count aggregation
    this._counts = null; // collection of count fields
    this._prev = null; // previous aggregation cells

    this._inputs = null; // array of dependent input tuple field names
    this._outputs = null; // array of output tuple field names
  }
Group-by aggregation operator.
@constructor
@param {object} params - The parameters for this operator.
@param {Array<function(object): *>} [params.groupby] - An array of accessors to groupby.
@param {Array<function(object): *>} [params.fields] - An array of accessors to aggregate.
@param {Array<string>} [params.ops] - An array of strings indicating aggregation operations.
@param {Array<number>} [params.aggregate_params] - An optional array of parameters for aggregation operations.
@param {Array<string>} [params.as] - An array of output field names for aggregated values.
@param {boolean} [params.cross=false] - A flag indicating that the full
  cross-product of groupby values should be generated, including empty cells.
  If true, the drop parameter is ignored and empty cells are retained.
@param {boolean} [params.drop=true] - A flag indicating if empty cells should be removed.