public void Test()
        {
            var originator = new Originator("field 2", 42)
            {
                Property1 = "property 1",
                Field1    = "field 1"
            };

            Assert.That(originator.Field1, Is.EqualTo("field 1"));
            Assert.That(originator.GetField2(), Is.EqualTo("field 2"));
            Assert.That(originator.Property1, Is.EqualTo("property 1"));
            Assert.That(originator.Property2, Is.EqualTo(42));

            var memento = new Memento <Originator>(originator);

            originator.Field1 = "field 1a";
            originator.SetField2("field 2a");
            originator.Property1 = "property 1a";
            originator.SetProperty2(52);

            Assert.That(originator.Field1, Is.EqualTo("field 1a"));
            Assert.That(originator.GetField2(), Is.EqualTo("field 2a"));
            Assert.That(originator.Property1, Is.EqualTo("property 1a"));
            Assert.That(originator.Property2, Is.EqualTo(52));

            memento.Restore(originator);

            Assert.That(originator.Field1, Is.EqualTo("field 1"));
            Assert.That(originator.GetField2(), Is.EqualTo("field 2"));
            Assert.That(originator.Property1, Is.EqualTo("property 1"));
            Assert.That(originator.Property2, Is.EqualTo(42));
        }