Inheritance: IAspectWeavingSettings
        public override IMethodWeaver Build()
        {
            var weavingSettings = new WeavingSettingsImpl(contractType, typeDefinition);

            if (compositePropertyMap.HasAspectDefinitions) {
                var aspectWeavingSettings = new AspectWeavingSettingsImpl {
                    WeavingSettings = weavingSettings,
                    AspectRepository = aspectWeavingServices.AspectRepository,
                    AspectArgsMapper = aspectWeavingServices.AspectArgsMapper
                };

                return new CompositeGetPropertyWeaver(propertyTypeBuilder, compositePropertyMap.ContractMember, compositePropertyMap.AspectDefinitions, aspectWeavingSettings);
            }

            return new GetPropertyDecoratorWeaver(compositePropertyMap.ContractMember.GetGetMethod(), weavingSettings);
        }
        public IMethodWeaver Build()
        {
            var weavingSettings = new WeavingSettingsImpl(contractType, typeDefinition);

            if (compositeMethodMap.HasAspectDefinitions) {
                var aspectWeavingSettings = new AspectWeavingSettingsImpl {
                    WeavingSettings = weavingSettings,
                    AspectRepository = aspectWeavingServices.AspectRepository,
                    AspectArgsMapper = aspectWeavingServices.AspectArgsMapper
                };

                return new CompositeMethodWeaver(compositeMethodMap.Target, compositeMethodMap.AspectDefinitions, aspectWeavingSettings);
            }

            return new MethodDecoratorWeaver(compositeMethodMap.ContractMember, weavingSettings);
        }
        public override IMethodWeaver Build()
        {
            var invokeMethod = compositeEventMap.ContractMember.GetInvokeMethod();
            var weavingSettings = new WeavingSettingsImpl(contractType, typeDefinition);

            if (compositeEventMap.HasAspectDefinitions) {
                var aspectWeavingSettings = new AspectWeavingSettingsImpl {
                    WeavingSettings = weavingSettings,
                    AspectRepository = aspectWeavingServices.AspectRepository,
                    AspectArgsMapper = aspectWeavingServices.AspectArgsMapper
                };

                return new CompositeRaiseEventWeaver(eventTypeBuilder, compositeEventMap.ContractMember, invokeMethod, compositeEventMap.AspectDefinitions, aspectWeavingSettings);
            }

            return null;
        }
        public override IMethodWeaver Build()
        {
            var weavingSettings = new WeavingSettingsImpl(contractType, typeDefinition);
            var addMethod = compositeEventMap.ContractMember.AddMethod;

            if (compositeEventMap.HasAspectDefinitions) {
                var aspectWeavingSettings = new AspectWeavingSettingsImpl {
                    WeavingSettings = weavingSettings,
                    AspectRepository = aspectWeavingServices.AspectRepository,
                    AspectArgsMapper = aspectWeavingServices.AspectArgsMapper
                };

                return new CompositeAddEventWeaver(eventTypeBuilder, addMethod, compositeEventMap.AspectDefinitions, aspectWeavingSettings);
            }

            return new AddEventDecoratorWeaver(eventTypeBuilder, compositeEventMap.ContractMember, weavingSettings);
        }