protected virtual Expression VisitNhDistinct(NhDistinctExpression expression)
		{
			return expression.Accept(this);
		}
		protected HqlTreeNode VisitNhDistinct(NhDistinctExpression expression)
		{
			var visitor = new HqlGeneratorExpressionTreeVisitor(_parameters);
			return _hqlTreeBuilder.ExpressionSubTreeHolder(_hqlTreeBuilder.Distinct(), visitor.VisitExpression(expression.Expression));
		}
        protected Expression BaseVisitNhDistinct(NhDistinctExpression expression)
        {
            Expression nx = base.VisitExpression(expression.Expression);

            return nx != expression.Expression ? new NhDistinctExpression(nx) : expression;
        }
 protected virtual Expression VisitNhDistinct(NhDistinctExpression expression)
 {
     return VisitUnhandledItem<NhDistinctExpression, Expression>(expression, "VisitNhDistinct", BaseVisitNhDistinct);
 }
		protected virtual Expression VisitNhDistinct(NhDistinctExpression expression)
		{
			Expression nx = VisitExpression(expression.Expression);

			return nx != expression.Expression ? new NhDistinctExpression(nx) : expression;
		}