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

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

            StaticProperty = 9;
            staticField    = StaticProperty;
            StaticMethod();
            StaticEventHappened += eventDelegate;
            OnStaticEventHappened(new InnerEventArgs());
            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;
            i = InnerAbstractClass.StaticInnerAbstractClassProperty;
            InnerAbstractClass.StaticInnerAbstractClassMethod();
            InnerAbstractClass.StaticInnerAbstractClassEventHappened += eventDelegate;
            InnerAbstractClass.StaticInnerAbstractClassEventHappened -= eventDelegate;

            InnerImplementingClass innerImplementingClass = new InnerImplementingClass();

            innerImplementingClass.InnerAbstractClassProperty = 85;
            i = 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;
        }
            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;
            }