public void DeepClone_StackNull_AsReference(TypeModel model)
		{
			var stack = new StackOfClass()
			{
				Collection = null
			};

			var clone = (StackOfClass)model.DeepClone(stack);

			Assert.IsNotNull(clone);
			Assert.IsNull(clone.Collection);
		}
		public void DeepClone_StackWithNullItem_AsReference(TypeModel model)
		{
			var stack = new StackOfClass()
			{
				Collection = new Stack<ItemClass>()
			};

			stack.Collection.Push(new ItemClass() { Message = "Hi there" });
			stack.Collection.Push(null);
			stack.Collection.Push(new ItemClass() { Message = "How are you ?" });

			var clone = (StackOfClass)model.DeepClone(stack);

			Assert.AreEqual(stack.Collection.Count, clone.Collection.Count);

			for (int i = 0; i < 3; i++)
			{
				var originalItem = stack.Collection.Pop();
				var cloneItem = clone.Collection.Pop();

				if (originalItem == null)
				{
					Assert.IsNull(cloneItem);
				}
				else
				{
					Assert.AreEqual(originalItem.Message, cloneItem.Message);					
				}
			}
		}