Inheritance: DelegatingObject
 public void GettingAPropertyThatIsNotDefinedInTheRootObjectReturnsItsValueAndIsReturnedBottomUp()
 {
     dynamic value = new CheshireCat( new Cat() );
     value.Modules.Add( new Animal() );
     Assert.AreEqual( "Animal", value.Name );
 }
 public void GettingAPropertyThatIsNotDefinedInTheRootObjectReturnsItsValueIfItIsOnTheLastModule()
 {
     dynamic value = new CheshireCat( new Cat() );
     Assert.AreEqual( "Cat", value.Name );
 }
 public void GettingAPropertyThatIsDefinedInTheRootObjectReturnsItsValueWhenThereIsNoBaseModule()
 {
     dynamic value = new CheshireCat();
     Assert.AreEqual( "Grin", value.Action );
 }