Inheritance: SqlBaseExpression
        protected override Expression VisitDeclare(SqlDeclareExpression expression)
        {
            SqlDeclareExpression current;
            if (!TryGetCurrent(expression, out current))
            {
                return expression;
            }

            if (!(this.result &= current.Type == expression.Type))
            {
                return expression;
            }

            if (!(this.result &= current.NodeType == expression.NodeType))
            {
                return expression;
            }

            this.currentObject = current.VariableDeclarations;
            this.VisitExpressionList(expression.VariableDeclarations);
            if (!this.result)
            {
                return expression;
            }

            this.currentObject = current;
            return expression;
        }
		protected virtual Expression VisitDeclare(SqlDeclareExpression expression)
		{
			var variableDeclarations = this.VisitExpressionList(expression.VariableDeclarations);

			if (variableDeclarations != expression.VariableDeclarations)
			{
				return new SqlDeclareExpression(variableDeclarations);
			}

			return expression;
		}