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

            operand   = replacingExpression.Operand;
            collation = replacingExpression.Collation;
        }
        internal override object Clone(SqlNodeCloneContext context)
        {
            if (context.NodeMapping.ContainsKey(this))
            {
                return(context.NodeMapping[this]);
            }

            SqlCollate clone = new SqlCollate((SqlExpression)operand.Clone(context), collation);

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