public void DifferentSubTypes(Type subType, Type expected) { var tm = TypeModel.Create(); var strategy = (AutoAddStrategy)tm.AutoAddStrategy; strategy.DisableAutoRegisteringSubtypes = true; var original = new BaseContainer(); original.List = (ListType)Activator.CreateInstance(subType); original.List.Add(1); original.List.Add(2); original.List.Add(3); ListType copy = tm.DeepClone(original).List; Assert.That(copy, Is.EqualTo(original.List)); Assert.That(copy.GetType(), Is.EqualTo(expected)); }