public void DeepClone_ArrayWithNullItem_AsReference(TypeModel model)
		{
			var list = new ArrayOfClass()
			{
				Collection = new ItemClass[]
				{
				    new ItemClass() { Message = "Hi there"},
					null,
					new ItemClass() { Message = "How are you ?"}
				}
			};

			var clone = (ArrayOfClass)model.DeepClone(list);

			Assert.AreEqual(list.Collection.Length, clone.Collection.Length);
			Assert.AreEqual(list.Collection[0].Message, clone.Collection[0].Message);
			Assert.IsNull(clone.Collection[1]);
			Assert.AreEqual(list.Collection[2].Message, clone.Collection[2].Message);
		}
		public void DeepClone_ArrayNull_NotAsReference(TypeModel model)
		{
			var manualModel = TypeModel.Create();
			manualModel.Add(typeof(ArrayOfClass), true).AddField(1, "Collection");
			manualModel.Add(typeof(ItemClass), true);

			var array = new ArrayOfClass()
			{
				Collection = null
			};

			var clone = (ArrayOfClass)manualModel.DeepClone(array);

			Assert.IsNull(clone.Collection);
		}
		public void DeepClone_ArrayEmpty_AsReference(TypeModel model)
		{
			var array = new ArrayOfClass()
			{
				Collection = new ItemClass[] { }
			};

			var clone = (ArrayOfClass)model.DeepClone(array);

			Assert.IsNotNull(clone.Collection);
			Assert.AreEqual(clone.Collection.Length, 0);
		}
		public void DeepClone_ArrayNull_AsReference(TypeModel model)
		{
			var array = new ArrayOfClass()
			{
				Collection = null
			};

			var clone = (ArrayOfClass)model.DeepClone(array);

			Assert.IsNull(clone.Collection);
		}
		public void DeepClone_ArrayOfClass_AsReference(TypeModel model)
		{
			var array = new ArrayOfClass()
			{
				Collection = new ItemClass[] { new ItemClass() { Message = "hello" }, new ItemClass() { Message = "lol" } }
			};

			var clone = (ArrayOfClass)model.DeepClone(array);

			Assert.AreEqual(array.Collection.Length, clone.Collection.Length);
			Assert.AreEqual(array.Collection[0].Message, clone.Collection[0].Message);
			Assert.AreEqual(array.Collection[1].Message, clone.Collection[1].Message);
		}