gitextract_enrgbkx0/ ├── .editorconfig ├── .github/ │ ├── stale.yml │ └── workflows/ │ └── android.yml ├── .gitignore ├── .project ├── .settings/ │ └── org.eclipse.buildship.core.prefs ├── CHANGELOG.md ├── LICENSE ├── README.md ├── build.gradle ├── documentation/ │ └── diagrams/ │ └── design.graphml ├── gradle/ │ └── wrapper/ │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── gradlew ├── gradlew.bat ├── magnet/ │ ├── build.gradle │ ├── gradle.properties │ └── src/ │ ├── main/ │ │ └── java/ │ │ └── magnet/ │ │ ├── Classifier.java │ │ ├── Factory.java │ │ ├── Instance.java │ │ ├── Magnet.java │ │ ├── Registry.java │ │ ├── Scope.java │ │ ├── Scoping.java │ │ ├── SelectorFilter.java │ │ ├── Visitor.java │ │ └── internal/ │ │ ├── FactoryFilter.java │ │ ├── Generated.java │ │ ├── ImmutableArrayList.java │ │ ├── Index.java │ │ ├── InstanceBucket.java │ │ ├── InstanceFactory.java │ │ ├── InstanceManager.java │ │ ├── InternalFactory.java │ │ ├── MagnetInstanceManager.java │ │ ├── MagnetScope.java │ │ └── Range.java │ └── test/ │ ├── java/ │ │ └── magnet/ │ │ └── internal/ │ │ ├── FactoryFilter_MagnetInstanceManagerTest.java │ │ ├── FactoryFilter_MagnetScopeTest.java │ │ ├── InstanceBucketTest.java │ │ ├── InstrumentedScope.java │ │ ├── MagnetInstanceManagerTest.java │ │ ├── MagnetScope_CircularDependencyTest.java │ │ ├── MagnetScope_DisposeTest.java │ │ ├── MagnetScope_FindDeepForSiblingTypesTest.java │ │ ├── MagnetScope_GetManyTest.java │ │ ├── MagnetScope_ManyInstancesInMultipleScopesTest.java │ │ ├── MagnetScope_RegisterAndGetTest.java │ │ ├── MagnetScope_SiblingTypesTest.java │ │ ├── MagnetScopingDirectTest.java │ │ ├── MagnetScopingNoneTest.java │ │ ├── MagnetScopingTopmostDependsOnDirectTest.java │ │ ├── MagnetScopingTopmostDependsOnTopmostTest.java │ │ ├── MagnetScopingTopmostDependsOnUnscopedTest.java │ │ ├── Scope_GetManyAnySiblingTypesTest_Issue95.java │ │ ├── Scope_LimitDirectScoping_DependencyInNonReachableChildScopeTest.java │ │ ├── Scope_LimitDirectScoping_InstanceWithDependencyTest.java │ │ ├── Scope_LimitDirectScoping_SingleInstanceTest.java │ │ ├── Scope_LimitTest.java │ │ ├── Scope_LimitWithDependencyTest.java │ │ ├── VisitInstancesTest.java │ │ ├── VisitScopesTest.java │ │ ├── events/ │ │ │ ├── ObservableScopeVisitor.java │ │ │ ├── OnEnterScope.java │ │ │ ├── OnExitScope.java │ │ │ └── OnInstance.java │ │ └── observer/ │ │ ├── ScopeObserver.java │ │ └── ScopeValidator.java │ └── resources/ │ └── mockito-extensions/ │ └── org.mockito.plugins.MockMaker ├── magnet-kotlin/ │ ├── build.gradle │ ├── gradle.properties │ └── src/ │ ├── main/ │ │ └── java/ │ │ └── magnet/ │ │ ├── MagnetExt.kt │ │ ├── ScopeExt.kt │ │ └── internal/ │ │ ├── ManyLazy.kt │ │ ├── OptionalLazy.kt │ │ └── SingleLazy.kt │ └── test/ │ └── java/ │ └── magnet/ │ └── kotlin/ │ ├── ScopeExtTest.kt │ └── internal/ │ ├── ManyLazyTest.kt │ ├── OptionalLazyTest.kt │ └── SingleLazyTest.kt ├── magnet-processor/ │ ├── build.gradle │ ├── gradle.properties │ ├── libs/ │ │ └── tools.jar │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── magnet/ │ │ │ └── processor/ │ │ │ ├── MagnetProcessor.kt │ │ │ ├── common/ │ │ │ │ ├── AptUtils.kt │ │ │ │ └── KotlinMethodMetadata.kt │ │ │ ├── instances/ │ │ │ │ ├── FactoryTypeModel.kt │ │ │ │ ├── InstanceProcessor.kt │ │ │ │ ├── aspects/ │ │ │ │ │ ├── classifier/ │ │ │ │ │ │ └── ClassifierAttributeParser.kt │ │ │ │ │ ├── disabled/ │ │ │ │ │ │ └── DisabledAttributeParser.kt │ │ │ │ │ ├── disposer/ │ │ │ │ │ │ ├── DisposeMethodGenerator.kt │ │ │ │ │ │ ├── DisposerAttributeParser.kt │ │ │ │ │ │ ├── DisposerValidator.kt │ │ │ │ │ │ └── IsDisposableMethodGenerator.kt │ │ │ │ │ ├── factory/ │ │ │ │ │ │ ├── CreateMethodGenerator.kt │ │ │ │ │ │ ├── CustomFactoryCreateMethodGenerator.kt │ │ │ │ │ │ ├── FactoryAttributeParser.kt │ │ │ │ │ │ └── StandardFactoryCreateMethodGenerator.kt │ │ │ │ │ ├── index/ │ │ │ │ │ │ └── FactoryIndexCodeGenerator.kt │ │ │ │ │ ├── limitedto/ │ │ │ │ │ │ ├── GetLimitMethodGenerator.kt │ │ │ │ │ │ ├── LimitedToAttributeParser.kt │ │ │ │ │ │ └── LimitedToValidator.kt │ │ │ │ │ ├── scoping/ │ │ │ │ │ │ ├── GetScopingMethodGenerator.kt │ │ │ │ │ │ └── ScopingAttributeParser.kt │ │ │ │ │ ├── selector/ │ │ │ │ │ │ ├── GetSelectorMethodGenerator.kt │ │ │ │ │ │ └── SelectorAttributeParser.kt │ │ │ │ │ ├── siblings/ │ │ │ │ │ │ └── GetSiblingTypesMethodGenerator.kt │ │ │ │ │ └── type/ │ │ │ │ │ ├── TypeAndTypesValidator.kt │ │ │ │ │ ├── TypeAttributeParser.kt │ │ │ │ │ └── TypesAttributeParser.kt │ │ │ │ ├── generator/ │ │ │ │ │ ├── CodeGenerator.kt │ │ │ │ │ ├── CodeWriter.kt │ │ │ │ │ └── FactoryTypeCodeGenerator.kt │ │ │ │ └── parser/ │ │ │ │ ├── AspectValidator.kt │ │ │ │ ├── AttributeParser.kt │ │ │ │ ├── InstanceParser.kt │ │ │ │ ├── InstanceParserForClass.kt │ │ │ │ ├── InstanceParserForMethod.kt │ │ │ │ └── ParserInstance.kt │ │ │ └── registry/ │ │ │ ├── Model.kt │ │ │ ├── RegistryGenerator.kt │ │ │ ├── RegistryParser.kt │ │ │ ├── RegistryProcessor.kt │ │ │ └── instances/ │ │ │ ├── IndexGeneratorVisitor.kt │ │ │ ├── Indexer.kt │ │ │ ├── InstanceIndexGenerator.kt │ │ │ ├── Model.kt │ │ │ └── SectionsCreatorVisitor.kt │ │ └── resources/ │ │ └── META-INF/ │ │ ├── gradle/ │ │ │ └── incremental.annotation.processors │ │ └── services/ │ │ └── javax.annotation.processing.Processor │ └── test/ │ ├── java/ │ │ └── magnet/ │ │ └── processor/ │ │ ├── GenerateRegistryForInstanceFactoriesTest.kt │ │ ├── IndexerTest.kt │ │ ├── InstanceCustomFactoryProcessorTest.kt │ │ ├── InstanceDisposerTest.kt │ │ ├── InstanceIndexProcessorTest.kt │ │ ├── MagnetProcessorFactoryNamesTest.kt │ │ ├── MagnetProcessorTest.kt │ │ ├── SelectorInFactoryClassTest.kt │ │ └── SiblingTypesTest.kt │ └── resources/ │ ├── GenerateRegistryForInstanceFactoriesTest/ │ │ ├── App.java │ │ ├── Implementation1.java │ │ ├── Implementation3_1.java │ │ ├── Implementation3_2.java │ │ ├── Implementation4_1.java │ │ ├── Implementation4_2.java │ │ ├── Implementation5_1.java │ │ ├── Implementation5_2.java │ │ ├── Implementation6_1.java │ │ ├── Implementation6_2.java │ │ ├── Interface1.java │ │ ├── Interface3.java │ │ ├── Interface4.java │ │ ├── Interface5.java │ │ ├── Interface6_1.java │ │ ├── Interface6_2.java │ │ ├── Interface7.java │ │ └── expected/ │ │ ├── MagnetIndexer1.java │ │ ├── MagnetIndexer2.java │ │ ├── MagnetIndexer3.java │ │ ├── MagnetIndexer4.java │ │ ├── MagnetIndexer5.java │ │ ├── MagnetIndexer6.java │ │ └── MagnetIndexer7.java │ ├── InstanceCustomFactoryProcessorTest/ │ │ ├── CustomFactory1.java │ │ ├── CustomFactory2.java │ │ ├── CustomFactory3.java │ │ ├── Implementation1.java │ │ ├── Implementation2.java │ │ ├── Implementation3.java │ │ ├── Interface1.java │ │ ├── Interface2.java │ │ ├── Interface3.java │ │ └── expected/ │ │ ├── Implementation1MagnetFactory.java │ │ ├── Implementation2MagnetFactory.java │ │ └── Implementation3MagnetFactory.java │ ├── InstanceDisposerTest/ │ │ ├── Implementation1.java │ │ ├── Implementation2.java │ │ ├── Implementation3.java │ │ ├── Implementation4.java │ │ ├── Implementation5.java │ │ ├── Interface.java │ │ └── expected/ │ │ └── Implementation1MagnetFactory.java │ ├── InstanceIndexProcessorTest/ │ │ ├── Implementation1.java │ │ ├── Implementation2.java │ │ ├── Interface1.java │ │ ├── Interface2.java │ │ └── generated/ │ │ ├── app_test_Implementation1MagnetFactory.java │ │ └── app_test_Implementation2MagnetFactory.java │ ├── MagnetProcessorFactoryNamesTest/ │ │ ├── Delegate1.java │ │ ├── Interface1.java │ │ └── generated/ │ │ ├── Delegate1MagnetFactory.java │ │ └── Interface1DelegateMagnetFactory.java │ ├── MagnetProcessorTest/ │ │ ├── AppExtensionRegistry.java │ │ ├── Constructor_PackagePrivate_PackagePrivate/ │ │ │ └── UnderTest.java │ │ ├── Constructor_PackagePrivate_Private/ │ │ │ ├── UnderTest.java │ │ │ └── expected/ │ │ │ └── UnderTestMagnetFactory.java │ │ ├── Constructor_Private/ │ │ │ └── UnderTest.java │ │ ├── Constructor_Protected/ │ │ │ └── UnderTest.java │ │ ├── Constructor_Public_PackagePrivate/ │ │ │ └── UnderTest.java │ │ ├── Constructor_Public_Private/ │ │ │ ├── UnderTest.java │ │ │ └── expected/ │ │ │ └── UnderTestMagnetFactory.java │ │ ├── Constructor_Public_Protected/ │ │ │ ├── UnderTest.java │ │ │ └── expected/ │ │ │ └── UnderTestMagnetFactory.java │ │ ├── Constructor_Public_Public/ │ │ │ └── UnderTest.java │ │ ├── Constructor_Public_Public_Kotlin/ │ │ │ └── UnderTest.java │ │ ├── Covariance_Constructor_ManyParameter/ │ │ │ ├── Foo.java │ │ │ ├── UnderTest.java │ │ │ └── expected/ │ │ │ └── UnderTestMagnetFactory.java │ │ ├── Covariance_Constructor_SingleParameter/ │ │ │ ├── Foo.java │ │ │ └── UnderTest.java │ │ ├── DefaultArguments_JvmOverloads_AtTheEnd/ │ │ │ ├── UnderTest.java │ │ │ └── expected/ │ │ │ └── UnderTestMagnetFactory.java │ │ ├── DefaultArguments_JvmOverloads_InTheMiddle/ │ │ │ ├── UnderTest.java │ │ │ └── expected/ │ │ │ └── UnderTestMagnetFactory.java │ │ ├── DefaultArguments_JvmOverloads_Mixed/ │ │ │ ├── UnderTest.java │ │ │ └── expected/ │ │ │ └── UnderTestMagnetFactory.java │ │ ├── DisabledTab.java │ │ ├── Executor.java │ │ ├── ExecutorImpl.java │ │ ├── ExecutorMaster.java │ │ ├── Generics_GetOptional_Unchecked/ │ │ │ ├── Dependency.java │ │ │ ├── UnderTest.java │ │ │ └── expected/ │ │ │ └── UnderTestMagnetFactory.java │ │ ├── Generics_GetSingle_Unchecked/ │ │ │ ├── Dependency.java │ │ │ ├── UnderTest.java │ │ │ └── expected/ │ │ │ └── UnderTestMagnetFactory.java │ │ ├── Generics_ProvideTypeWithParameter/ │ │ │ ├── Parameter.java │ │ │ ├── Type.java │ │ │ ├── UnderTest.java │ │ │ └── expected/ │ │ │ └── UnderTestProvideTypeMagnetFactory.java │ │ ├── Generics_ProvideTypeWithParameter_NoClassifier/ │ │ │ ├── Parameter.java │ │ │ ├── Type.java │ │ │ ├── UnderTest.java │ │ │ └── expected/ │ │ │ └── UnderTestProvideTypeMagnetFactory.java │ │ ├── HomePage.java │ │ ├── HomePageMenuItem.java │ │ ├── HomePageNoParams.java │ │ ├── HomePageWithClassifierParams.java │ │ ├── HomePageWithGenericParam.java │ │ ├── HomePageWithManyParameterizedParams.java │ │ ├── HomePageWithManyParameterizedWildcardInParams.java │ │ ├── HomePageWithManyParameterizedWildcardKnownParams.java │ │ ├── HomePageWithManyParameterizedWildcardOutParams.java │ │ ├── HomePageWithManyParams.java │ │ ├── HomePageWithManyWildcardParams.java │ │ ├── HomePageWithParams.java │ │ ├── HomePageWithScope.java │ │ ├── HomePageWithStaticConstructor.java │ │ ├── HomePageWithStaticConstructorDisabled.java │ │ ├── HomePageWithStaticConstructorSingle.java │ │ ├── HomeRepository.java │ │ ├── Lazy_Constructor_ManyParameter/ │ │ │ ├── UnderTest.java │ │ │ └── expected/ │ │ │ └── UnderTestMagnetFactory.java │ │ ├── Lazy_Constructor_ManyParameter_NullableGenericType/ │ │ │ └── UnderTest.java │ │ ├── Lazy_Constructor_ManyParameter_NullableListType/ │ │ │ └── UnderTest.java │ │ ├── Lazy_Constructor_ManyParameter_Wildcard/ │ │ │ ├── UnderTest.java │ │ │ └── expected/ │ │ │ └── UnderTestMagnetFactory.java │ │ ├── Lazy_Constructor_NoKotlinMetadata/ │ │ │ └── UnderTest.java │ │ ├── Lazy_Constructor_OptionalParameter/ │ │ │ ├── UnderTest.java │ │ │ └── expected/ │ │ │ └── UnderTestMagnetFactory.java │ │ ├── Lazy_Constructor_OptionalParameter_Wildcard/ │ │ │ ├── UnderTest.java │ │ │ └── expected/ │ │ │ └── UnderTestMagnetFactory.java │ │ ├── Lazy_Constructor_SingleParameter/ │ │ │ ├── UnderTest.java │ │ │ └── expected/ │ │ │ └── UnderTestMagnetFactory.java │ │ ├── Lazy_Constructor_SingleParameter_ParameterizedType/ │ │ │ ├── Foo.java │ │ │ ├── UnderTest.java │ │ │ └── expected/ │ │ │ └── UnderTestMagnetFactory.java │ │ ├── Lazy_Constructor_SingleParameter_Wildcard/ │ │ │ ├── UnderTest.java │ │ │ └── expected/ │ │ │ └── UnderTestMagnetFactory.java │ │ ├── Lazy_Method_NoKotlinMetadata/ │ │ │ └── UnderTest.java │ │ ├── Lazy_Method_OptionalParameter/ │ │ │ ├── UnderTest.java │ │ │ └── expected/ │ │ │ └── UnderTestProvideUnderTestDepMagnetFactory.java │ │ ├── Lazy_Method_OptionalParameter_Wildcard/ │ │ │ ├── UnderTest.java │ │ │ └── expected/ │ │ │ └── UnderTestProvideUnderTestDepMagnetFactory.java │ │ ├── Lazy_Method_SingleParameter/ │ │ │ ├── UnderTest.java │ │ │ └── expected/ │ │ │ └── UnderTestProvideUnderTestDepMagnetFactory.java │ │ ├── Lazy_Method_SingleParameter_Wildcard/ │ │ │ ├── UnderTest.java │ │ │ └── expected/ │ │ │ └── UnderTestProvideUnderTestDepMagnetFactory.java │ │ ├── Limit_Empty_NoGetter/ │ │ │ ├── UnderTest.java │ │ │ └── expected/ │ │ │ └── UnderTestMagnetFactory.java │ │ ├── Limit_NotEmpty_HasGetter/ │ │ │ ├── UnderTest.java │ │ │ └── expected/ │ │ │ └── UnderTestMagnetFactory.java │ │ ├── Limit_ReservedAsterisks_Fails/ │ │ │ └── UnderTest.java │ │ ├── Limit_ScopingDirect_GeneratesGetter/ │ │ │ ├── UnderTest.java │ │ │ └── expected/ │ │ │ └── UnderTestMagnetFactory.java │ │ ├── Limit_ScopingUnscoped_Fails/ │ │ │ └── UnderTest.java │ │ ├── MenuItem.java │ │ ├── Page.java │ │ ├── ScopeParameter_CustomName/ │ │ │ ├── UnderTest.java │ │ │ └── expected/ │ │ │ └── UnderTestMagnetFactory.java │ │ ├── ScopeParameter_CustomName_KotlinClass/ │ │ │ ├── UnderTest.java │ │ │ └── expected/ │ │ │ └── UnderTestMagnetFactory.java │ │ ├── ScopeParameter_DefaultName/ │ │ │ ├── UnderTest.java │ │ │ └── expected/ │ │ │ └── UnderTestMagnetFactory.java │ │ ├── StaticMethodNeedsDependencyWithClassifier/ │ │ │ ├── Constants.java │ │ │ ├── Input.java │ │ │ ├── Output.java │ │ │ ├── StaticFunction.java │ │ │ └── generated/ │ │ │ └── StaticFunctionProvideInputMagnetFactory.java │ │ ├── StaticMethodProvidesInnerClass/ │ │ │ ├── PowerManager.java │ │ │ ├── PowerManagerProvider.java │ │ │ └── expected/ │ │ │ └── PowerManagerProviderProvideWakeLockMagnetFactory.java │ │ ├── Tab.java │ │ ├── TypeAutoDetect_ExtendsObjectNoInterfaces/ │ │ │ ├── UnderTest.java │ │ │ └── expected/ │ │ │ └── UnderTestMagnetFactory.java │ │ ├── UnimplementedTab.java │ │ ├── UserData.java │ │ ├── UserPage.java │ │ ├── UserPageMenuItem.java │ │ ├── WorkProcessor.java │ │ └── generated/ │ │ ├── ForInterfaceWithGenericType_ExecutorMagnetFactory.java │ │ ├── HomePageMagnetFactory.java │ │ ├── HomePageNoParamsMagnetFactory.java │ │ ├── HomePageWithClassifierParamsMagnetFactory.java │ │ ├── HomePageWithManyParameterizedParamsMagnetFactory.java │ │ ├── HomePageWithManyParameterizedWildcardInParamsMagnetFactory.java │ │ ├── HomePageWithManyParameterizedWildcardKnownParamsMagnetFactory.java │ │ ├── HomePageWithManyParameterizedWildcardOutParamsMagnetFactory.java │ │ ├── HomePageWithManyParamsMagnetFactory.java │ │ ├── HomePageWithManyWildcardParamsMagnetFactory.java │ │ ├── HomePageWithParamsMagnetFactory.java │ │ ├── HomePageWithScopeMagnetFactory.java │ │ └── HomePageWithStaticConstructorSingleCreateRepositoriesMagnetFactory.java │ ├── SelectorInFactoryClassTest/ │ │ ├── Implementation1.java │ │ ├── Implementation10.java │ │ ├── Implementation2.java │ │ ├── Implementation3.java │ │ ├── Implementation4.java │ │ ├── Implementation5.java │ │ ├── Implementation6.java │ │ ├── Implementation7.java │ │ ├── Implementation8.java │ │ ├── Implementation9.java │ │ ├── Interface.java │ │ └── generated/ │ │ ├── Implementation10MagnetFactory.java │ │ ├── Implementation1MagnetFactory.java │ │ ├── Implementation7MagnetFactory.java │ │ ├── Implementation8MagnetFactory.java │ │ └── Implementation9MagnetFactory.java │ └── SiblingTypesTest/ │ ├── Implementation1.java │ ├── Implementation2.java │ ├── Implementation3.java │ ├── Implementation4.java │ ├── Implementation5.java │ ├── Interface1.java │ ├── Interface2.java │ └── generated/ │ ├── Implementation4Interface1MagnetFactory.java │ └── Implementation4Interface2MagnetFactory.java ├── magnetx-app/ │ ├── build.gradle │ ├── gradle.properties │ └── src/ │ └── main/ │ └── kotlin/ │ └── magnetx/ │ └── AppExtension.kt ├── magnetx-app-rx3android/ │ ├── build.gradle │ ├── gradle.properties │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ └── java/ │ └── magnetx/ │ └── RxAndroidAppExtension.kt ├── magnetx-app-rxandroid/ │ ├── build.gradle │ ├── gradle.properties │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ └── java/ │ └── magnetx/ │ └── RxAndroidAppExtension.kt ├── magnetx-app-stetho/ │ ├── build.gradle │ ├── gradle.properties │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ └── java/ │ └── magnetx/ │ └── app/ │ └── stetho/ │ └── StethoAppExtension.kt ├── magnetx-app-stetho-scope/ │ ├── build.gradle │ ├── gradle.properties │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ └── java/ │ └── magnetx/ │ └── app/ │ └── stetho/ │ └── scope/ │ ├── ScopeDumper.kt │ ├── StethoScopeDumpPlugin.kt │ └── StethoScopeInitializer.kt ├── magnetx-selector-android/ │ ├── build.gradle │ ├── gradle.properties │ └── src/ │ └── main/ │ └── kotlin/ │ └── magnetx/ │ └── AndroidSelectorFilter.kt ├── magnetx-selector-features/ │ ├── build.gradle │ ├── gradle.properties │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ └── java/ │ └── magnetx/ │ └── FeaturesSelectorFilter.kt └── settings.gradle