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

                SelfReferencingMembersMixin selfReferencingMembersMixin = new SelfReferencingMembersMixin();
                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;

                InnerAbstractClass.StaticInnerAbstractClassProperty = 32;
                InnerAbstractClass.StaticInnerAbstractClassMethod();
                InnerAbstractClass.StaticInnerAbstractClassEventHappened += eventDelegate;
                InnerAbstractClass.StaticInnerAbstractClassEventHappened -= eventDelegate;

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

                this.InnerAbstractClassAbstractProperty = 781;
                i = this.InnerAbstractClassAbstractProperty;
                this.InnerAbstractClassAbstractMethod();
                this.InnerAbstractClassAbstractEventHappened += eventDelegate;
                this.OnInnerAbstractClassAbstractEventHappened(new InnerEventArgs());
                this.InnerAbstractClassAbstractEventHappened -= eventDelegate;

                this.InnerAbstractClassInnerInterfaceProperty = 85;
                i = this.InnerAbstractClassInnerInterfaceProperty;
                this.InnerAbstractClassInnerInterfaceMethod();
                this.InnerAbstractClassInnerInterfaceEventHappened += eventDelegate;
                this.OnInnerAbstractClassInnerInterfaceEventHappened(new InnerEventArgs());
                this.InnerAbstractClassInnerInterfaceEventHappened -= eventDelegate;

                this.InnerInterfaceProperty = 69;
                i = this.InnerInterfaceProperty;
                this.InnerInterfaceMethod();
                this.InnerInterfaceEventHappened += eventDelegate;
                this.OnInnerInterfaceEventHappened(new InnerEventArgs());
                this.InnerInterfaceEventHappened -= eventDelegate;

                this.InnerStructInnerInterfaceProperty = 15;
                i = this.InnerStructInnerInterfaceProperty;
                this.InnerStructInnerInterfaceMethod();
                this.InnerStructInnerInterfaceEventHappened += eventDelegate;
                this.OnInnerStructInnerInterfaceEventHappened(new InnerEventArgs());
                this.InnerStructInnerInterfaceEventHappened -= eventDelegate;

                this.InnerImplementingClassProperty = 48;
                this.innerImplementingClassField = this.InnerImplementingClassProperty;
                this.InnerImplementingClassMethod();
                this.InnerImplementingClassEventHappened += eventDelegate;
                this.OnInnerImplementingClassEventHappened(new InnerEventArgs());
                this.InnerImplementingClassEventHappened -= eventDelegate;

                InnerImplementingClass.StaticInnerImplementingClassProperty = 13;
                InnerImplementingClass.staticInnerImplementingClassField = InnerImplementingClass.StaticInnerImplementingClassProperty;
                InnerImplementingClass.StaticInnerImplementingClassMethod();
                InnerImplementingClass.StaticInnerImplementingClassEventHappened += eventDelegate;
                InnerImplementingClass.OnStaticInnerImplementingClassEventHappened(new InnerEventArgs());
                InnerImplementingClass.StaticInnerImplementingClassEventHappened -= eventDelegate;
            }
            public void InnerImplementingClassReferenceAllMembers()
            {
                var events = 0;
                EventHandler <InnerEventArgs> eventDelegate = (object sender, InnerEventArgs e) => { ++events; };
                int i;

                SelfReferencingMembersMixin selfReferencingMembersMixin = new SelfReferencingMembersMixin();

                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;

                InnerAbstractClass.StaticInnerAbstractClassProperty = 32;
                InnerAbstractClass.StaticInnerAbstractClassMethod();
                InnerAbstractClass.StaticInnerAbstractClassEventHappened += eventDelegate;
                InnerAbstractClass.StaticInnerAbstractClassEventHappened -= eventDelegate;

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

                this.InnerAbstractClassAbstractProperty = 781;
                i = this.InnerAbstractClassAbstractProperty;
                this.InnerAbstractClassAbstractMethod();
                this.InnerAbstractClassAbstractEventHappened += eventDelegate;
                this.OnInnerAbstractClassAbstractEventHappened(new InnerEventArgs());
                this.InnerAbstractClassAbstractEventHappened -= eventDelegate;

                this.InnerAbstractClassInnerInterfaceProperty = 85;
                i = this.InnerAbstractClassInnerInterfaceProperty;
                this.InnerAbstractClassInnerInterfaceMethod();
                this.InnerAbstractClassInnerInterfaceEventHappened += eventDelegate;
                this.OnInnerAbstractClassInnerInterfaceEventHappened(new InnerEventArgs());
                this.InnerAbstractClassInnerInterfaceEventHappened -= eventDelegate;

                this.InnerInterfaceProperty = 69;
                i = this.InnerInterfaceProperty;
                this.InnerInterfaceMethod();
                this.InnerInterfaceEventHappened += eventDelegate;
                this.OnInnerInterfaceEventHappened(new InnerEventArgs());
                this.InnerInterfaceEventHappened -= eventDelegate;

                this.InnerStructInnerInterfaceProperty = 15;
                i = this.InnerStructInnerInterfaceProperty;
                this.InnerStructInnerInterfaceMethod();
                this.InnerStructInnerInterfaceEventHappened += eventDelegate;
                this.OnInnerStructInnerInterfaceEventHappened(new InnerEventArgs());
                this.InnerStructInnerInterfaceEventHappened -= eventDelegate;

                this.InnerImplementingClassProperty = 48;
                this.innerImplementingClassField    = this.InnerImplementingClassProperty;
                this.InnerImplementingClassMethod();
                this.InnerImplementingClassEventHappened += eventDelegate;
                this.OnInnerImplementingClassEventHappened(new InnerEventArgs());
                this.InnerImplementingClassEventHappened -= eventDelegate;

                InnerImplementingClass.StaticInnerImplementingClassProperty = 13;
                InnerImplementingClass.staticInnerImplementingClassField    = InnerImplementingClass.StaticInnerImplementingClassProperty;
                InnerImplementingClass.StaticInnerImplementingClassMethod();
                InnerImplementingClass.StaticInnerImplementingClassEventHappened += eventDelegate;
                InnerImplementingClass.OnStaticInnerImplementingClassEventHappened(new InnerEventArgs());
                InnerImplementingClass.StaticInnerImplementingClassEventHappened -= eventDelegate;
            }