public void DeepClone_DictionaryBaseCollectionRef_AsReference(TypeModel model)
		{
			var itemClass = new ItemClass() { Message = "Hi" };
			var inner = new DictionaryBaseCollection<int, IItemClass>()
			{
			    { 12, itemClass },
			    { 726, itemClass },
			};

			var obj = new DictionaryBaseCollectionWrapper<int, IItemClass>()
			{
				Collection = inner
			};

			var clone = (DictionaryBaseCollectionWrapper<int, IItemClass>)model.DeepClone(obj);

			Assert.AreEqual(obj.Collection.Count, clone.Collection.Count);
			Assert.AreEqual(obj.Collection[12].Message, clone.Collection[12].Message);
			Assert.AreEqual(obj.Collection[726].Message, clone.Collection[726].Message);

			Assert.IsTrue(object.ReferenceEquals(obj.Collection[12], obj.Collection[726]), "Original reference failed");
			Assert.IsTrue(object.ReferenceEquals(clone.Collection[12], clone.Collection[726]), "Clone reference not maintained");
		}
		public void DeepClone_DictionaryBaseCollection_AsReference(TypeModel model)
		{
			var inner = new DictionaryBaseCollection<int, IItemClass>()
			{
			    { 12, new ItemClass() { Message = "Hi" }},
			    { 726, new ItemClass() { Message = "There bro" }},
			};

			var obj = new DictionaryBaseCollectionWrapper<int, IItemClass>()
			{
				Collection = inner
			};

			var clone = (DictionaryBaseCollectionWrapper<int, IItemClass>)model.DeepClone(obj);

			Assert.AreEqual(obj.Collection.Count, clone.Collection.Count);
			Assert.AreEqual(obj.Collection[12].Message, clone.Collection[12].Message);
			Assert.AreEqual(obj.Collection[726].Message, clone.Collection[726].Message);
		}