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()); }