protected override void Initialize()
        {
            var str1 = new StrTestPrivSeqEntity {
                Str = "a"
            };
            var str2 = new StrTestPrivSeqEntity {
                Str = "b"
            };
            var int1 = new IntTestPrivSeqEntity {
                Number = 1
            };
            var int2 = new IntTestPrivSeqEntity {
                Number = 2
            };
            var map1 = new TernaryMapEntity();
            var map2 = new TernaryMapEntity();

            // Revision 1 (map1: initialy one mapping int1 -> str1, map2: empty)
            using (var tx = Session.BeginTransaction())
            {
                str1_id        = (int)Session.Save(str1);
                str2_id        = (int)Session.Save(str2);
                int1_id        = (int)Session.Save(int1);
                int2_id        = (int)Session.Save(int2);
                map1.Map[int1] = str1;
                map1_id        = (int)Session.Save(map1);
                map2_id        = (int)Session.Save(map2);
                tx.Commit();
            }
            // Revision 2 (map1: replacing the mapping, map2: adding two mappings)
            using (var tx = Session.BeginTransaction())
            {
                map1.Map[int1] = str2;
                map2.Map[int1] = str1;
                map2.Map[int2] = str1;
                tx.Commit();
            }
            // Revision 3 (map1: removing a non-existing mapping, adding an existing mapping - no changes, map2: removing a mapping)
            using (var tx = Session.BeginTransaction())
            {
                map1.Map.Remove(int2);
                map1.Map[int1] = str2;
                map2.Map.Remove(int1);
                tx.Commit();
            }
            // Revision 4 (map1: adding a mapping, map2: adding a mapping)
            using (var tx = Session.BeginTransaction())
            {
                map1.Map[int2] = str2;
                map2.Map[int1] = str2;
                tx.Commit();
            }
        }
        protected override void Initialize()
        {
            var str1 = new StrTestPrivSeqEntity {
                Str = "a"
            };
            var str2 = new StrTestPrivSeqEntity {
                Str = "b"
            };
            var int1 = new IntTestPrivSeqEntity {
                Number = 1
            };
            var int2 = new IntTestPrivSeqEntity {
                Number = 2
            };
            var map1 = new TernaryMapEntity();

            // Revision 1 (int1 -> str1)
            using (var tx = Session.BeginTransaction())
            {
                str1_id        = (int)Session.Save(str1);
                str2_id        = (int)Session.Save(str2);
                int1_id        = (int)Session.Save(int1);
                int2_id        = (int)Session.Save(int2);
                map1.Map[int1] = str1;
                map1_id        = (int)Session.Save(map1);
                tx.Commit();
            }
            // Revision 2 (removing int1->str1, flushing, adding int1->str1 again and a new int2->str2 mapping to force a change)
            using (var tx = Session.BeginTransaction())
            {
                map1.Map = new Dictionary <IntTestPrivSeqEntity, StrTestPrivSeqEntity>();
                Session.Flush();
                map1.Map[int1] = str1;
                map1.Map[int2] = str2;
                tx.Commit();
            }
            // Revision 3 (removing int1->str1, flushing, overwriting int2->str1)
            using (var tx = Session.BeginTransaction())
            {
                map1.Map.Remove(int1);
                Session.Flush();
                map1.Map[int2] = str1;
                tx.Commit();
            }
        }