protected virtual DbFunctionAggregate VisitFunctionAggregate(DbFunctionAggregate aggregate) { var result = aggregate; if (aggregate != null) { var newFunction = VisitFunction(aggregate.Function); var newArguments = VisitExpressionList(aggregate.Arguments); Debug.Assert(newArguments.Count == 1, "Function aggregate had more than one argument?"); if (!ReferenceEquals(aggregate.Function, newFunction) || !ReferenceEquals(aggregate.Arguments, newArguments)) { if (aggregate.Distinct) { result = CqtBuilder.AggregateDistinct(newFunction, newArguments[0]); } else { result = CqtBuilder.Aggregate(newFunction, newArguments[0]); } } } return(result); }