protected override Expression VisitNhAggregate(NhAggregatedExpression expression)
		{
			using (_inAggregate.SetFlag())
			{
				return base.VisitNhAggregate(expression);
			}
		}
		protected virtual Expression VisitNhAggregate(NhAggregatedExpression expression)
		{
			switch ((NhExpressionType)expression.NodeType)
			{
				case NhExpressionType.Average:
					return VisitNhAverage((NhAverageExpression)expression);
				case NhExpressionType.Min:
					return VisitNhMin((NhMinExpression)expression);
				case NhExpressionType.Max:
					return VisitNhMax((NhMaxExpression)expression);
				case NhExpressionType.Sum:
					return VisitNhSum((NhSumExpression)expression);
				case NhExpressionType.Count:
					return VisitNhCount((NhCountExpression)expression);
				case NhExpressionType.Distinct:
					return VisitNhDistinct((NhDistinctExpression)expression);
				default:
					throw new ArgumentException();
			}
		}
		protected override Expression VisitNhAggregate(NhAggregatedExpression expression)
		{
			ContainsAggregateMethods = true;
			return expression;
		}
		protected override Expression VisitNhAggregate(NhAggregatedExpression expression)
		{
			return expression;
		}