public void ShouldBindNestedWhenStructInTheMiddle()
        {
            var binder = new Binder <ValueContainerClassNotify <ValueContainerStruct <UniversalStub> > >();

            binder.Bind(x => x.Value.Value.String).To(x => x.Value.Value.String2);

            var stub = new ValueContainerClassNotify <ValueContainerStruct <UniversalStub> >();

            stub.Value = new ValueContainerStruct <UniversalStub>(new UniversalStub());

            using (binder.Attach(stub))
            {
                stub.Value.Value.String2.ShouldBe(null);

                stub.Value.Value.String = "a";
                stub.Value.Value.String2.ShouldBe("a");

                stub.Value = new ValueContainerStruct <UniversalStub>(new UniversalStub {
                    String = "b"
                });
                stub.Value.Value.String2.ShouldBe("b");

                stub.Value.Value.String = "c";
                stub.Value.Value.String2.ShouldBe("c");
            }
        }
        public void ShouldBindNestedWhenNoPropertyChangedNotificationsInTheMiddle()
        {
            var binder = new Binder <ValueContainerClassNotify <ValueContainerClass <UniversalStub> > >();

            binder.Bind(x => x.Value.Value.String).To(x => x.Value.Value.String2);

            var stub = new ValueContainerClassNotify <ValueContainerClass <UniversalStub> >();

            stub.Value       = new ValueContainerClass <UniversalStub>();
            stub.Value.Value = new UniversalStub();

            using (binder.Attach(stub))
            {
                stub.Value.Value.String2.ShouldBe(null);

                stub.Value.Value.String = "a";
                stub.Value.Value.String2.ShouldBe("a");

                stub.Value = new ValueContainerClass <UniversalStub> {
                    Value = new UniversalStub {
                        String = "b"
                    }
                };
                stub.Value.Value.String2.ShouldBe("b");

                stub.Value.Value.String = "c";
                stub.Value.Value.String2.ShouldBe("c");
            }
        }