protected virtual Expression VisitNhAverage(NhAverageExpression expression)
		{
			return expression.Accept(this);
		}
		protected HqlTreeNode VisitNhAverage(NhAverageExpression expression)
		{
			var hqlExpression = VisitExpression(expression.Expression).AsExpression();
			if (expression.Type != expression.Expression.Type)
				hqlExpression = _hqlTreeBuilder.Cast(hqlExpression, expression.Type);

			return _hqlTreeBuilder.Cast(_hqlTreeBuilder.Average(hqlExpression), expression.Type);
		}
        protected virtual Expression BaseVisitNhAverage(NhAverageExpression expression)
        {
            Expression nx = base.VisitExpression(expression.Expression);

            return nx != expression.Expression ? new NhAverageExpression(nx) : expression;
        }
 protected virtual Expression VisitNhAverage(NhAverageExpression expression)
 {
     return VisitUnhandledItem<NhAverageExpression, Expression>(expression, "VisitNhAverage", BaseVisitNhAverage);
 }
		protected HqlTreeNode VisitNhAverage(NhAverageExpression expression)
		{
			return _hqlTreeBuilder.Cast(_hqlTreeBuilder.Average(VisitExpression(expression.Expression).AsExpression()), expression.Type);
		}