public void CheckAnnotation()
        {
            var a = Annotation1.Create();

            a.ID = 23;
            a.SetIDD(18);
            var a2 = Serializer.Clone(a);

            Assert.Equal(0, a2.ID);
            Assert.Equal(18, a2.GetIDD());

            var b = new Annotation2
            {
                ID1 = 1,
                ID2 = 2,
            };

            b.SetID3(3);
            var b2 = Serializer.Clone(b);

            Assert.Equal(1, b2.ID1); // ahem property automatically saved with private backing field... not sure what to do about that....
            Assert.Equal(2, b2.ID2);
            Assert.Equal(3, b2.GetID3());

            var c = new Annotation3
            {
                ID1 = 1,
                ID2 = 2,
            };

            c.SetID3(3);
            var c2 = Serializer.Clone(c);

            Assert.Equal(0, c2.ID1);
            Assert.Equal(2, c2.ID2);
            Assert.Equal(0, c2.GetID3());
        }