public void SqlUpdateCloneTest()
        {
            SqlTableRef t = SqlDml.TableRef(table1);
            SqlUpdate   u = SqlDml.Update(t);

            u.Values[t[0]] = 1;
            u.Values[t[1]] = "Anonym";
            u.Where        = t.Columns["ID"] == 1;
            u.Hints.Add(SqlDml.FastFirstRowsHint(10));
            SqlUpdate uClone = (SqlUpdate)u.Clone();

            Assert.AreNotEqual(u, uClone);
            Assert.AreNotEqual(u.Update, uClone.Update);
            Assert.AreEqual(u.NodeType, uClone.NodeType);
            Assert.AreEqual(u.Values.Count, uClone.Values.Count);
            foreach (KeyValuePair <ISqlLValue, SqlExpression> p in u.Values)
            {
                Assert.IsFalse(uClone.Values.ContainsKey(p.Key));
                Assert.IsFalse(uClone.Values.ContainsValue(p.Value));
            }
            if (u.Where != null)
            {
                Assert.AreNotEqual(u.Where, uClone.Where);
                Assert.AreEqual(u.Where.NodeType, uClone.Where.NodeType);
            }
            else
            {
                Assert.AreEqual(uClone.Where, null);
            }
            Assert.AreEqual(u.Hints.Count, uClone.Hints.Count);
        }