public override void ReplaceWith(SqlExpression expression)
        {
            ArgumentValidator.EnsureArgumentNotNull(expression, "expression");
            ArgumentValidator.EnsureArgumentIs <SqlBetween>(expression, "expression");
            SqlBetween replacingExpression = expression as SqlBetween;

            NodeType   = replacingExpression.NodeType;
            left       = replacingExpression.Left;
            right      = replacingExpression.Right;
            expression = replacingExpression.Expression;
        }
        internal override object Clone(SqlNodeCloneContext context)
        {
            if (context.NodeMapping.ContainsKey(this))
            {
                return(context.NodeMapping[this]);
            }

            SqlBetween clone = new SqlBetween(NodeType, (SqlExpression)expression.Clone(context), (SqlExpression)left.Clone(context), (SqlExpression)right.Clone(context));

            context.NodeMapping[this] = clone;
            return(clone);
        }