public void Dispose() { var obj = new DeepObject(); dynamic d = obj; d.Name.First = "James"; d.Name.Last = "Bond"; obj.Dispose(); ConsoleEx.WriteLine("\n- Disposed: {0}", obj); Assert.IsTrue(obj.IsDisposed); Assert.AreEqual(0, obj.DeepCount()); obj.Dispose(); ConsoleEx.WriteLine("- Disposed Twice: {0}", obj); }