public void CloneClassWithClassReferenceViaInterface()
        {
            var wic = new WithInterfaceClass {
                Name = "John Doe"
            };
            var source = new WithInterfaceReferenceClass {
                Reference = wic
            };

            var clone = source.Clone();

            Assert.IsFalse(ReferenceEquals(clone.Reference, wic));
            Assert.IsAssignableFrom(typeof(WithInterfaceClass), clone.Reference);
            Assert.AreEqual("John Doe", ((WithInterfaceClass)clone.Reference).Name);
        }
        public void CloneClassWithClassReferenceViaInterface()
        {
            var wic = new WithInterfaceClass {Name = "John Doe"};
            var source = new WithInterfaceReferenceClass {Reference = wic};

            var clone = source.Clone();

            Assert.IsFalse(ReferenceEquals(clone.Reference, wic));
            Assert.IsAssignableFrom(typeof (WithInterfaceClass), clone.Reference);
            Assert.AreEqual("John Doe", ((WithInterfaceClass)clone.Reference).Name);
        }