public void DeepClone_ListObject_AsReference(TypeModel model)
		{
			var item = new ItemClass() { Message = "Test" };

			var obj = new ObjectTestsWrapper()
			{
				List = new List<object>() { item, "test" , 43 }
			};

			var clone = (ObjectTestsWrapper)model.DeepClone(obj);

			Assert.AreEqual(3, clone.List.Count);

			var originalItem1 = (ItemClass)obj.List[0];
			var originalItem2 = (string)obj.List[1];
			var originalItem3 = (int)obj.List[2];

			var cloneItem1 = (ItemClass)clone.List[0];
			var cloneItem2 = (string)clone.List[1];
			var cloneItem3 = (int)clone.List[2];

			Assert.AreEqual(originalItem1.Message, cloneItem1.Message);
			Assert.AreEqual(originalItem2, cloneItem2);
			Assert.AreEqual(originalItem3, cloneItem3);
		}
		public void DeepClone_DictionaryObject_AsReference(TypeModel model)
		{
			var item = new ItemClass() { Message = "Test" };

			var obj = new ObjectTestsWrapper()
			{
				Dictionary = new Dictionary<int, object>() { {1, item}, {23, "Hello"}, {45, new DateTime(2012, 05, 02)} }
			};

			var clone = (ObjectTestsWrapper)model.DeepClone(obj);

			Assert.AreEqual(3, clone.Dictionary.Count);

			var originalItem1 = (ItemClass)obj.Dictionary[1];
			var originalItem2 = (string)obj.Dictionary[23];
			var originalItem3 = (DateTime)obj.Dictionary[45];

			var cloneItem1 = (ItemClass)clone.Dictionary[1];
			var cloneItem2 = (string)clone.Dictionary[23];
			var cloneItem3 = (DateTime)clone.Dictionary[45];

			Assert.AreEqual(originalItem1.Message, cloneItem1.Message);
			Assert.AreEqual(originalItem2, cloneItem2);
			Assert.AreEqual(originalItem3, cloneItem3);
		}
		public void DeepClone_KeyValuePairWithObject(TypeModel model)
		{
			var obj = new ObjectTestsWrapper()
			{
				KeyValuePair = new KeyValuePair<object, object>(new ItemClass() { Message = "Test" }, 5.0d)
			};

			var clone = (ObjectTestsWrapper)model.DeepClone(obj);

			Assert.AreEqual(((ItemClass)obj.KeyValuePair.Key).Message, ((ItemClass)clone.KeyValuePair.Key).Message);
			Assert.AreEqual((double)obj.KeyValuePair.Value, (double)clone.KeyValuePair.Value);
		}