public void InnerAbstractClassReferenceAllMembers()
            {
                var events = 0;
                EventHandler <InnerEventArgs> eventDelegate = (object sender, InnerEventArgs e) => { ++events; };
                int i;

                var selfReferencingMembersMixin = new SelfReferencingMembersMixin
                {
                    Property = 4
                };

                selfReferencingMembersMixin.field = selfReferencingMembersMixin.Property;
                selfReferencingMembersMixin.Method();
                selfReferencingMembersMixin.EventHappened += eventDelegate;
                selfReferencingMembersMixin.OnEventHappened(new InnerEventArgs());
                selfReferencingMembersMixin.EventHappened -= eventDelegate;

                SelfReferencingMembersMixin.StaticProperty = 9;
                SelfReferencingMembersMixin.staticField    = StaticProperty;
                SelfReferencingMembersMixin.StaticMethod();
                SelfReferencingMembersMixin.StaticEventHappened += eventDelegate;
                SelfReferencingMembersMixin.OnStaticEventHappened(new InnerEventArgs());
                SelfReferencingMembersMixin.StaticEventHappened -= eventDelegate;

                InnerStruct innerStruct = new InnerStruct();

                innerStruct.InnerStructProperty = 54;
                i = innerStruct.InnerStructProperty;
                innerStruct.InnerStructMethod();
                innerStruct.InnerStructEventHappened += eventDelegate;
                innerStruct.InnerStructEventHappened -= eventDelegate;
                InnerStruct.StaticInnerStructProperty = 58;
                i = InnerStruct.StaticInnerStructProperty;
                InnerStruct.StaticInnerStructMethod();
                InnerStruct.StaticInnerStructEventHappened += eventDelegate;
                InnerStruct.StaticInnerStructEventHappened -= eventDelegate;

                this.InnerAbstractClassProperty = 85;
                this.innerAbstractClassField    = this.InnerAbstractClassProperty;
                this.InnerAbstractClassMethod();
                this.InnerAbstractClassEventHappened += eventDelegate;
                this.OnInnerAbstractClassEventHappened(new InnerEventArgs());
                this.InnerAbstractClassEventHappened -= eventDelegate;

                InnerAbstractClass.StaticInnerAbstractClassProperty = 32;
                InnerAbstractClass.staticInnerAbstractClassField    = InnerAbstractClass.StaticInnerAbstractClassProperty;
                InnerAbstractClass.StaticInnerAbstractClassMethod();
                InnerAbstractClass.StaticInnerAbstractClassEventHappened += eventDelegate;
                InnerAbstractClass.OnStaticInnerAbstractClassEventHappened(new InnerEventArgs());
                InnerAbstractClass.StaticInnerAbstractClassEventHappened -= eventDelegate;

                var innerImplementingClass = new InnerImplementingClass
                {
                    InnerAbstractClassProperty = 85
                };

                innerImplementingClass.innerAbstractClassField = innerImplementingClass.InnerAbstractClassProperty;
                innerImplementingClass.InnerAbstractClassMethod();
                innerImplementingClass.InnerAbstractClassEventHappened += eventDelegate;
                innerImplementingClass.InnerAbstractClassEventHappened -= eventDelegate;

                innerImplementingClass.InnerAbstractClassAbstractProperty = 781;
                i = innerImplementingClass.InnerAbstractClassAbstractProperty;
                innerImplementingClass.InnerAbstractClassAbstractMethod();
                innerImplementingClass.InnerAbstractClassAbstractEventHappened += eventDelegate;
                innerImplementingClass.InnerAbstractClassAbstractEventHappened -= eventDelegate;

                innerImplementingClass.InnerAbstractClassInnerInterfaceProperty = 85;
                i = innerImplementingClass.InnerAbstractClassInnerInterfaceProperty;
                innerImplementingClass.InnerAbstractClassInnerInterfaceMethod();
                innerImplementingClass.InnerAbstractClassInnerInterfaceEventHappened += eventDelegate;
                innerImplementingClass.InnerAbstractClassInnerInterfaceEventHappened -= eventDelegate;

                innerImplementingClass.InnerInterfaceProperty = 69;
                i = innerImplementingClass.InnerInterfaceProperty;
                innerImplementingClass.InnerInterfaceMethod();
                innerImplementingClass.InnerInterfaceEventHappened += eventDelegate;
                innerImplementingClass.InnerInterfaceEventHappened -= eventDelegate;

                innerImplementingClass.InnerStructInnerInterfaceProperty = 15;
                i = innerImplementingClass.InnerStructInnerInterfaceProperty;
                innerImplementingClass.InnerStructInnerInterfaceMethod();
                innerImplementingClass.InnerStructInnerInterfaceEventHappened += eventDelegate;
                innerImplementingClass.InnerStructInnerInterfaceEventHappened -= eventDelegate;

                innerImplementingClass.InnerImplementingClassProperty = 48;
                i = innerImplementingClass.InnerImplementingClassProperty;
                innerImplementingClass.InnerImplementingClassMethod();
                innerImplementingClass.InnerImplementingClassEventHappened += eventDelegate;
                innerImplementingClass.InnerImplementingClassEventHappened -= eventDelegate;

                InnerImplementingClass.StaticInnerImplementingClassProperty = 13;
                i = InnerImplementingClass.StaticInnerImplementingClassProperty;
                InnerImplementingClass.StaticInnerImplementingClassMethod();
                InnerImplementingClass.StaticInnerImplementingClassEventHappened += eventDelegate;
                InnerImplementingClass.StaticInnerImplementingClassEventHappened -= eventDelegate;
            }