gitextract_au9h9jge/ ├── .editorconfig ├── .gitattributes ├── .github/ │ ├── actions/ │ │ ├── prepare-emulator-action/ │ │ │ └── action.yml │ │ └── setup-action/ │ │ └── action.yml │ └── workflows/ │ ├── blueprints-starter-ci.yml │ ├── ci.yml │ ├── pages.yml │ ├── publish-release.yml │ └── publish-snapshot.yml ├── .gitignore ├── .idea/ │ └── ktfmt.xml ├── AGENTS.md ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── NOTICE ├── README.md ├── RELEASING.md ├── blueprints/ │ ├── README.md │ └── starter/ │ ├── .gitignore │ ├── README.md │ ├── app/ │ │ ├── build.gradle.kts │ │ └── src/ │ │ ├── androidMain/ │ │ │ ├── AndroidManifest.xml │ │ │ ├── kotlin/ │ │ │ │ └── software/ │ │ │ │ └── amazon/ │ │ │ │ └── app/ │ │ │ │ └── platform/ │ │ │ │ └── template/ │ │ │ │ ├── AndroidAppGraph.kt │ │ │ │ ├── AndroidApplication.kt │ │ │ │ ├── MainActivity.kt │ │ │ │ └── MainActivityViewModel.kt │ │ │ └── res/ │ │ │ └── values/ │ │ │ └── strings.xml │ │ ├── commonMain/ │ │ │ └── kotlin/ │ │ │ └── software/ │ │ │ └── amazon/ │ │ │ └── app/ │ │ │ └── platform/ │ │ │ └── template/ │ │ │ ├── AppGraph.kt │ │ │ ├── Application.kt │ │ │ └── TemplateProvider.kt │ │ ├── desktopMain/ │ │ │ └── kotlin/ │ │ │ └── software/ │ │ │ └── amazon/ │ │ │ └── app/ │ │ │ └── platform/ │ │ │ └── template/ │ │ │ ├── DesktopApp.kt │ │ │ ├── DesktopAppGraph.kt │ │ │ └── Main.kt │ │ ├── iosMain/ │ │ │ └── kotlin/ │ │ │ └── software/ │ │ │ └── amazon/ │ │ │ └── app/ │ │ │ └── platform/ │ │ │ └── template/ │ │ │ ├── IosAppGraph.kt │ │ │ └── MainViewController.kt │ │ └── wasmJsMain/ │ │ ├── kotlin/ │ │ │ └── software/ │ │ │ └── amazon/ │ │ │ └── app/ │ │ │ └── platform/ │ │ │ └── template/ │ │ │ ├── Main.kt │ │ │ └── WasmJsAppGraph.kt │ │ └── resources/ │ │ ├── index.html │ │ └── styles.css │ ├── build.gradle.kts │ ├── gradle/ │ │ ├── libs.versions.toml │ │ └── wrapper/ │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties │ ├── gradle.properties │ ├── gradlew │ ├── gradlew.bat │ ├── iosApp/ │ │ ├── Configuration/ │ │ │ └── Config.xcconfig │ │ ├── iosApp/ │ │ │ ├── Assets.xcassets/ │ │ │ │ ├── AccentColor.colorset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── AppIcon.appiconset/ │ │ │ │ │ └── Contents.json │ │ │ │ └── Contents.json │ │ │ ├── ComposeContentView.swift │ │ │ ├── Info.plist │ │ │ ├── Preview Content/ │ │ │ │ └── Preview Assets.xcassets/ │ │ │ │ └── Contents.json │ │ │ └── iOSApp.swift │ │ └── iosApp.xcodeproj/ │ │ ├── project.pbxproj │ │ ├── project.xcworkspace/ │ │ │ └── contents.xcworkspacedata │ │ └── xcshareddata/ │ │ └── xcschemes/ │ │ └── iosApp.xcscheme │ ├── navigation/ │ │ ├── impl/ │ │ │ ├── build.gradle.kts │ │ │ └── src/ │ │ │ ├── commonMain/ │ │ │ │ └── kotlin/ │ │ │ │ └── software/ │ │ │ │ └── amazon/ │ │ │ │ └── app/ │ │ │ │ └── platform/ │ │ │ │ └── template/ │ │ │ │ └── navigation/ │ │ │ │ ├── ExampleRepositoryImpl.kt │ │ │ │ ├── ExampleValueGenerator.kt │ │ │ │ ├── NavigationDetailPresenterImpl.kt │ │ │ │ ├── NavigationDetailRenderer.kt │ │ │ │ ├── NavigationHeaderPresenterImpl.kt │ │ │ │ ├── NavigationHeaderRenderer.kt │ │ │ │ └── NavigationPresenterImpl.kt │ │ │ └── commonTest/ │ │ │ └── kotlin/ │ │ │ └── software/ │ │ │ └── amazon/ │ │ │ └── app/ │ │ │ └── platform/ │ │ │ └── template/ │ │ │ └── navigation/ │ │ │ ├── NavigationDetailPresenterTest.kt │ │ │ ├── NavigationHeaderPresenterTest.kt │ │ │ └── NavigationPresenterImplTest.kt │ │ ├── public/ │ │ │ ├── build.gradle.kts │ │ │ └── src/ │ │ │ └── commonMain/ │ │ │ └── kotlin/ │ │ │ └── software/ │ │ │ └── amazon/ │ │ │ └── app/ │ │ │ └── platform/ │ │ │ └── template/ │ │ │ └── navigation/ │ │ │ ├── ExampleRepository.kt │ │ │ ├── NavigationDetailPresenter.kt │ │ │ ├── NavigationHeaderPresenter.kt │ │ │ └── NavigationPresenter.kt │ │ └── testing/ │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── commonMain/ │ │ └── kotlin/ │ │ └── software/ │ │ └── amazon/ │ │ └── app/ │ │ └── platform/ │ │ └── template/ │ │ └── navigation/ │ │ └── FakeExampleRepository.kt │ ├── settings.gradle.kts │ └── templates/ │ ├── impl/ │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── commonMain/ │ │ └── kotlin/ │ │ └── software/ │ │ └── amazon/ │ │ └── app/ │ │ └── platform/ │ │ └── template/ │ │ └── templates/ │ │ └── ComposeAppTemplateRenderer.kt │ └── public/ │ ├── build.gradle.kts │ └── src/ │ └── commonMain/ │ └── kotlin/ │ └── software/ │ └── amazon/ │ └── app/ │ └── platform/ │ └── template/ │ └── templates/ │ ├── AppTemplate.kt │ └── AppTemplatePresenter.kt ├── build.gradle ├── buildSrc/ │ ├── build.gradle │ ├── settings.gradle │ └── src/ │ └── main/ │ └── kotlin/ │ └── software/ │ └── amazon/ │ └── app/ │ └── platform/ │ └── gradle/ │ └── buildsrc/ │ ├── AppPlatformExtension.kt │ ├── AppPlugin.kt │ ├── BaseAndroidPlugin.kt │ ├── BasePlugin.kt │ ├── Gradle.kt │ ├── JvmLibraryPlugin.kt │ ├── KmpPlugin.kt │ ├── LibraryPlugin.kt │ ├── Platform.kt │ ├── Plugins.kt │ ├── RootPlugin.kt │ └── SdkPlugin.kt ├── di-common/ │ └── public/ │ ├── api/ │ │ ├── android/ │ │ │ └── public.api │ │ └── desktop/ │ │ └── public.api │ ├── build.gradle │ └── src/ │ └── commonMain/ │ └── kotlin/ │ └── software/ │ └── amazon/ │ └── app/ │ └── platform/ │ ├── inject/ │ │ ├── ContributesRenderer.kt │ │ └── robot/ │ │ └── ContributesRobot.kt │ ├── presenter/ │ │ └── PresenterCoroutineScope.kt │ └── scope/ │ └── coroutine/ │ ├── DefaultCoroutineDispatcher.kt │ ├── IoCoroutineDispatcher.kt │ └── MainCoroutineDispatcher.kt ├── docs/ │ ├── di.md │ ├── faq.md │ ├── index.md │ ├── module-structure.md │ ├── presenter.md │ ├── renderer.md │ ├── scope.md │ ├── setup.md │ ├── template.md │ └── testing.md ├── gradle/ │ ├── detekt-config.yml │ ├── libs.versions.toml │ └── wrapper/ │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle-plugin/ │ ├── api/ │ │ └── gradle-plugin.api │ ├── build.gradle │ ├── settings.gradle │ └── src/ │ └── main/ │ └── kotlin/ │ └── software/ │ └── amazon/ │ └── app/ │ └── platform/ │ └── gradle/ │ ├── AppPlatformExtension.kt │ ├── AppPlatformPlugin.kt │ ├── GradleExtensions.kt │ ├── ModuleStructureDependencyCheckTask.kt │ ├── ModuleStructurePlugin.kt │ ├── ModuleType.kt │ └── PluginIds.kt ├── gradle.properties ├── gradlew ├── gradlew.bat ├── internal/ │ └── testing/ │ ├── build.gradle │ └── src/ │ ├── androidMain/ │ │ └── kotlin/ │ │ └── software/ │ │ └── amazon/ │ │ └── app/ │ │ └── platform/ │ │ └── internal/ │ │ ├── IgnoreNative.kt │ │ ├── IgnoreWasm.android.kt │ │ ├── Platform.kt │ │ └── Thread.kt │ ├── commonMain/ │ │ └── kotlin/ │ │ └── software/ │ │ └── amazon/ │ │ └── app/ │ │ └── platform/ │ │ └── internal/ │ │ ├── IgnoreNative.kt │ │ ├── IgnoreWasm.kt │ │ ├── Platform.kt │ │ └── Thread.kt │ ├── desktopMain/ │ │ └── kotlin/ │ │ └── software/ │ │ └── amazon/ │ │ └── app/ │ │ └── platform/ │ │ └── internal/ │ │ ├── IgnoreNative.kt │ │ ├── IgnoreWasm.kt │ │ ├── Platform.kt │ │ └── Thread.kt │ ├── nativeMain/ │ │ └── kotlin/ │ │ └── software/ │ │ └── amazon/ │ │ └── app/ │ │ └── platform/ │ │ └── internal/ │ │ ├── IgnoreNative.kt │ │ ├── IgnoreWasm.kt │ │ ├── Platform.kt │ │ └── Thread.kt │ └── wasmJsMain/ │ └── kotlin/ │ └── software/ │ └── amazon/ │ └── app/ │ └── platform/ │ └── internal/ │ ├── IgnoreNative.kt │ ├── IgnoreWasm.kt │ ├── Platform.kt │ └── Thread.kt ├── ios-run.sh ├── kotlin-inject/ │ ├── impl/ │ │ ├── api/ │ │ │ ├── android/ │ │ │ │ └── impl.api │ │ │ └── desktop/ │ │ │ └── impl.api │ │ ├── build.gradle │ │ └── src/ │ │ ├── commonMain/ │ │ │ └── kotlin/ │ │ │ └── software/ │ │ │ └── amazon/ │ │ │ └── app/ │ │ │ └── platform/ │ │ │ ├── presenter/ │ │ │ │ └── PresenterCoroutineScopeComponent.kt │ │ │ └── scope/ │ │ │ └── coroutine/ │ │ │ ├── AppScopeCoroutineScopeComponent.kt │ │ │ ├── CoroutineDispatcherComponent.kt │ │ │ └── IoDispatcher.kt │ │ ├── noWasmJsMain/ │ │ │ └── kotlin/ │ │ │ └── software/ │ │ │ └── amazon/ │ │ │ └── app/ │ │ │ └── platform/ │ │ │ └── scope/ │ │ │ └── coroutine/ │ │ │ └── IoDispatcher.kt │ │ └── wasmJsMain/ │ │ └── kotlin/ │ │ └── software/ │ │ └── amazon/ │ │ └── app/ │ │ └── platform/ │ │ └── scope/ │ │ └── coroutine/ │ │ └── IoDispatcher.kt │ └── public/ │ ├── api/ │ │ ├── android/ │ │ │ └── public.api │ │ └── desktop/ │ │ └── public.api │ ├── build.gradle │ └── src/ │ ├── commonMain/ │ │ └── kotlin/ │ │ └── software/ │ │ └── amazon/ │ │ └── app/ │ │ └── platform/ │ │ └── scope/ │ │ └── di/ │ │ └── ComponentService.kt │ └── commonTest/ │ └── kotlin/ │ └── software/ │ └── amazon/ │ └── app/ │ └── platform/ │ └── scope/ │ └── di/ │ └── ComponentServiceTest.kt ├── kotlin-inject-extensions/ │ └── contribute/ │ ├── impl-code-generators/ │ │ ├── build.gradle │ │ └── src/ │ │ ├── main/ │ │ │ └── kotlin/ │ │ │ └── software/ │ │ │ └── amazon/ │ │ │ └── app/ │ │ │ └── platform/ │ │ │ └── inject/ │ │ │ ├── KotlinInjectContextAware.kt │ │ │ ├── KotlinInjectExtensionSymbolProcessorProvider.kt │ │ │ ├── Util.kt │ │ │ └── processor/ │ │ │ ├── ContributesBindingProcessor.kt │ │ │ ├── ContributesBindingScopedProcessor.kt │ │ │ ├── ContributesMockImplProcessor.kt │ │ │ ├── ContributesRealImplProcessor.kt │ │ │ ├── ContributesRendererProcessor.kt │ │ │ └── ContributesRobotProcessor.kt │ │ └── test/ │ │ └── kotlin/ │ │ └── software/ │ │ └── amazon/ │ │ └── app/ │ │ └── platform/ │ │ └── inject/ │ │ ├── CommonSourceCode.kt │ │ ├── Compilation.kt │ │ ├── CompilerTestUtil.kt │ │ └── processor/ │ │ ├── ContributesBindingProcessorTest.kt │ │ ├── ContributesBindingScopedProcessorTest.kt │ │ ├── ContributesMockImplGeneratorTest.kt │ │ ├── ContributesRealImplGeneratorTest.kt │ │ ├── ContributesRendererProcessorTest.kt │ │ └── ContributesRobotGeneratorTest.kt │ └── public/ │ ├── api/ │ │ ├── android/ │ │ │ └── public.api │ │ └── desktop/ │ │ └── public.api │ ├── build.gradle │ └── src/ │ └── commonMain/ │ └── kotlin/ │ └── software/ │ └── amazon/ │ └── app/ │ └── platform/ │ └── inject/ │ └── mock/ │ ├── ContributesMockImpl.kt │ ├── ContributesRealImpl.kt │ ├── MockMode.kt │ └── RealImpl.kt ├── ksp-common/ │ ├── public/ │ │ ├── build.gradle │ │ └── src/ │ │ └── main/ │ │ └── kotlin/ │ │ └── software/ │ │ └── amazon/ │ │ └── app/ │ │ └── platform/ │ │ └── ksp/ │ │ ├── CompositeSymbolProcessor.kt │ │ ├── ContextAware.kt │ │ ├── MergeScope.kt │ │ └── Util.kt │ └── testing/ │ ├── build.gradle │ └── src/ │ └── main/ │ └── kotlin/ │ └── software/ │ └── amazon/ │ └── app/ │ └── platform/ │ └── ksp/ │ ├── CommonSourceCode.kt │ └── Util.kt ├── metro/ │ ├── impl/ │ │ ├── api/ │ │ │ ├── android/ │ │ │ │ └── impl.api │ │ │ └── desktop/ │ │ │ └── impl.api │ │ ├── build.gradle │ │ └── src/ │ │ ├── commonMain/ │ │ │ └── kotlin/ │ │ │ └── software/ │ │ │ └── amazon/ │ │ │ └── app/ │ │ │ └── platform/ │ │ │ ├── presenter/ │ │ │ │ └── metro/ │ │ │ │ └── PresenterCoroutineScopeGraph.kt │ │ │ └── scope/ │ │ │ └── coroutine/ │ │ │ └── metro/ │ │ │ ├── AppScopeCoroutineScopeGraph.kt │ │ │ ├── CoroutineDispatcherGraph.kt │ │ │ └── IoDispatcher.kt │ │ ├── noWasmJsMain/ │ │ │ └── kotlin/ │ │ │ └── software/ │ │ │ └── amazon/ │ │ │ └── app/ │ │ │ └── platform/ │ │ │ └── scope/ │ │ │ └── coroutine/ │ │ │ └── metro/ │ │ │ └── IoDispatcher.kt │ │ └── wasmJsMain/ │ │ └── kotlin/ │ │ └── software/ │ │ └── amazon/ │ │ └── app/ │ │ └── platform/ │ │ └── scope/ │ │ └── coroutine/ │ │ └── metro/ │ │ └── IoDispatcher.kt │ └── public/ │ ├── api/ │ │ ├── android/ │ │ │ └── public.api │ │ └── desktop/ │ │ └── public.api │ ├── build.gradle │ └── src/ │ ├── commonMain/ │ │ └── kotlin/ │ │ └── software/ │ │ └── amazon/ │ │ └── app/ │ │ └── platform/ │ │ ├── inject/ │ │ │ └── metro/ │ │ │ └── ContributesScoped.kt │ │ ├── renderer/ │ │ │ └── metro/ │ │ │ ├── RendererKey.kt │ │ │ └── RobotKey.kt │ │ └── scope/ │ │ └── di/ │ │ └── metro/ │ │ └── MetroService.kt │ └── commonTest/ │ └── kotlin/ │ └── software/ │ └── amazon/ │ └── app/ │ └── platform/ │ └── scope/ │ └── di/ │ └── metro/ │ └── MetroServiceTest.kt ├── metro-extensions/ │ └── contribute/ │ ├── impl-code-generators/ │ │ ├── build.gradle │ │ └── src/ │ │ ├── main/ │ │ │ └── kotlin/ │ │ │ └── software/ │ │ │ └── amazon/ │ │ │ └── app/ │ │ │ └── platform/ │ │ │ └── metro/ │ │ │ ├── MetroContextAware.kt │ │ │ ├── MetroExtensionSymbolProcessorProvider.kt │ │ │ ├── Util.kt │ │ │ └── processor/ │ │ │ ├── ContributesRendererProcessor.kt │ │ │ ├── ContributesRobotProcessor.kt │ │ │ └── ContributesScopedProcessor.kt │ │ └── test/ │ │ └── kotlin/ │ │ └── software/ │ │ └── amazon/ │ │ ├── app/ │ │ │ └── platform/ │ │ │ └── inject/ │ │ │ └── metro/ │ │ │ ├── CommonSourceCode.kt │ │ │ ├── Compilation.kt │ │ │ ├── CompilerTestUtil.kt │ │ │ └── processor/ │ │ │ ├── ContributesRendererProcessorTest.kt │ │ │ ├── ContributesRobotGeneratorTest.kt │ │ │ └── ContributesScopedProcessorTest.kt │ │ └── test/ │ │ ├── TestRendererGraph.kt │ │ └── TestRobotGraph.kt │ └── impl-compiler-plugin/ │ ├── build.gradle │ └── src/ │ ├── main/ │ │ └── kotlin/ │ │ └── software/ │ │ └── amazon/ │ │ └── app/ │ │ └── platform/ │ │ └── metro/ │ │ └── compiler/ │ │ ├── AppPlatformMetroExtensionsPluginComponentRegistrar.kt │ │ ├── AppPlatformMetroExtensionsPluginRegistrar.kt │ │ ├── ClassIds.kt │ │ ├── Keys.kt │ │ ├── fir/ │ │ │ ├── AppPlatformMetroExtensionsDiagnostics.kt │ │ │ ├── AppPlatformMetroExtensionsFirCheckers.kt │ │ │ ├── FirHelpers.kt │ │ │ └── TypeResolution.kt │ │ ├── renderer/ │ │ │ ├── ContributesRendererChecker.kt │ │ │ ├── ContributesRendererFir.kt │ │ │ ├── ContributesRendererIds.kt │ │ │ ├── ContributesRendererIrExtension.kt │ │ │ ├── ContributesRendererMetroExtension.kt │ │ │ └── ContributesRendererSupport.kt │ │ ├── robot/ │ │ │ ├── ContributesRobotChecker.kt │ │ │ ├── ContributesRobotFir.kt │ │ │ ├── ContributesRobotIds.kt │ │ │ ├── ContributesRobotIrExtension.kt │ │ │ └── ContributesRobotMetroExtension.kt │ │ └── scoped/ │ │ ├── ContributesScopedChecker.kt │ │ ├── ContributesScopedFir.kt │ │ ├── ContributesScopedIds.kt │ │ ├── ContributesScopedMetroExtension.kt │ │ └── ContributesScopedSupport.kt │ └── test/ │ ├── java/ │ │ └── software/ │ │ └── amazon/ │ │ └── app/ │ │ └── platform/ │ │ └── metro/ │ │ └── compiler/ │ │ └── runners/ │ │ ├── BoxTestGenerated.java │ │ ├── FirDiagnosticTestGenerated.java │ │ └── FirDumpTestGenerated.java │ ├── kotlin/ │ │ └── software/ │ │ └── amazon/ │ │ └── app/ │ │ └── platform/ │ │ └── metro/ │ │ └── compiler/ │ │ ├── GenerateTests.kt │ │ ├── runners/ │ │ │ ├── AbstractBoxTest.kt │ │ │ ├── AbstractFirDiagnosticTest.kt │ │ │ └── AbstractFirDumpTest.kt │ │ ├── services/ │ │ │ ├── CompilerPluginTestSupport.kt │ │ │ ├── KotlinTestImportsPreprocessor.kt │ │ │ ├── MetroImportsPreprocessor.kt │ │ │ ├── MetroRuntimeProvider.kt │ │ │ ├── PluginAnnotationsProvider.kt │ │ │ └── TestSupportClasspathProvider.kt │ │ └── support/ │ │ └── UnusedRendererFactory.kt │ └── resources/ │ ├── box/ │ │ ├── contributesrenderer/ │ │ │ ├── defaultConstructorRenderer.kt │ │ │ ├── explicitModelType.kt │ │ │ ├── inferredFromHierarchy.kt │ │ │ ├── inferredFromHierarchyMultipleLevels.kt │ │ │ ├── injectConstructorRenderer.kt │ │ │ ├── innerModel.kt │ │ │ ├── innerRenderer.kt │ │ │ ├── sealedHierarchy.kt │ │ │ ├── sealedHierarchyDisabled.kt │ │ │ └── sealedHierarchyInDependencyModule.kt │ │ ├── contributesrobot/ │ │ │ ├── defaultConstructorRobot.kt │ │ │ ├── indirectSupertype.kt │ │ │ └── injectConstructorRobot.kt │ │ └── contributesscoped/ │ │ ├── defaultScoped.kt │ │ ├── innerClass.kt │ │ ├── onlyScoped.kt │ │ └── transitiveScoped.kt │ ├── diagnostics/ │ │ ├── contributesrenderer/ │ │ │ ├── missingInjectOnNonZeroArgConstructor.fir.diag.txt │ │ │ ├── missingInjectOnNonZeroArgConstructor.kt │ │ │ ├── modelTypeMustBeExplicitWhenNotInferable.fir.diag.txt │ │ │ ├── modelTypeMustBeExplicitWhenNotInferable.kt │ │ │ ├── redundantInjectOnZeroArgConstructor.fir.diag.txt │ │ │ ├── redundantInjectOnZeroArgConstructor.kt │ │ │ ├── rendererMustNotBeSingleton.fir.diag.txt │ │ │ └── rendererMustNotBeSingleton.kt │ │ ├── contributesrobot/ │ │ │ ├── classMustImplementRobot.fir.diag.txt │ │ │ ├── classMustImplementRobot.kt │ │ │ ├── classWithConstructorParametersMustUseInject.fir.diag.txt │ │ │ ├── classWithConstructorParametersMustUseInject.kt │ │ │ ├── onlyAppScopeSupported.fir.diag.txt │ │ │ ├── onlyAppScopeSupported.kt │ │ │ ├── robotMustNotBeSingleton.fir.diag.txt │ │ │ └── robotMustNotBeSingleton.kt │ │ └── contributesscoped/ │ │ ├── multipleOtherSupertypes.fir.diag.txt │ │ ├── multipleOtherSupertypes.kt │ │ ├── mustBeInject.fir.diag.txt │ │ ├── mustBeInject.kt │ │ ├── mustImplementScoped.fir.diag.txt │ │ ├── mustImplementScoped.kt │ │ ├── noSupertypes.fir.diag.txt │ │ ├── noSupertypes.kt │ │ ├── useContributesScopedInsteadOfContributesBinding.fir.diag.txt │ │ └── useContributesScopedInsteadOfContributesBinding.kt │ └── dump/ │ ├── contributesrenderer/ │ │ ├── defaultConstructorRenderer.fir.txt │ │ ├── defaultConstructorRenderer.kt │ │ ├── defaultConstructorRendererIr.fir.kt.txt │ │ ├── defaultConstructorRendererIr.fir.txt │ │ └── defaultConstructorRendererIr.kt │ ├── contributesrobot/ │ │ ├── defaultConstructorRobot.fir.txt │ │ ├── defaultConstructorRobot.kt │ │ ├── defaultConstructorRobotIr.fir.kt.txt │ │ ├── defaultConstructorRobotIr.fir.txt │ │ └── defaultConstructorRobotIr.kt │ └── contributesscoped/ │ ├── defaultScoped.fir.txt │ └── defaultScoped.kt ├── mkdocs.yml ├── presenter/ │ └── public/ │ ├── api/ │ │ ├── android/ │ │ │ └── public.api │ │ └── desktop/ │ │ └── public.api │ ├── build.gradle │ └── src/ │ ├── commonMain/ │ │ └── kotlin/ │ │ └── software/ │ │ └── amazon/ │ │ └── app/ │ │ └── platform/ │ │ └── presenter/ │ │ ├── BaseModel.kt │ │ ├── Presenter.kt │ │ ├── StateIn.kt │ │ └── template/ │ │ ├── ModelDelegate.kt │ │ └── Template.kt │ └── commonTest/ │ └── kotlin/ │ └── software/ │ └── amazon/ │ └── app/ │ └── platform/ │ └── presenter/ │ ├── StateInTest.kt │ └── template/ │ └── TemplateTest.kt ├── presenter-molecule/ │ ├── impl/ │ │ ├── api/ │ │ │ ├── android/ │ │ │ │ └── impl.api │ │ │ └── desktop/ │ │ │ └── impl.api │ │ ├── build.gradle │ │ └── src/ │ │ ├── androidMain/ │ │ │ └── kotlin/ │ │ │ └── software/ │ │ │ └── amazon/ │ │ │ └── app/ │ │ │ └── platform/ │ │ │ └── presenter/ │ │ │ └── molecule/ │ │ │ └── AndroidMoleculeScopeFactory.kt │ │ ├── commonMain/ │ │ │ └── kotlin/ │ │ │ └── software/ │ │ │ └── amazon/ │ │ │ └── app/ │ │ │ └── platform/ │ │ │ └── presenter/ │ │ │ └── molecule/ │ │ │ ├── DefaultMoleculeScopeFactory.kt │ │ │ └── backgesture/ │ │ │ └── DefaultBackGestureDispatcherPresenter.kt │ │ ├── commonTest/ │ │ │ └── kotlin/ │ │ │ └── software/ │ │ │ └── amazon/ │ │ │ └── app/ │ │ │ └── platform/ │ │ │ └── presenter/ │ │ │ └── molecule/ │ │ │ ├── DefaultMoleculeScopeFactoryTest.kt │ │ │ ├── KotlinInjectInjectionTest.kt │ │ │ └── MetroInjectionTest.kt │ │ ├── desktopMain/ │ │ │ └── kotlin/ │ │ │ └── software/ │ │ │ └── amazon/ │ │ │ └── app/ │ │ │ └── platform/ │ │ │ └── presenter/ │ │ │ └── molecule/ │ │ │ └── DesktopMoleculeScopeFactory.kt │ │ ├── iosMain/ │ │ │ └── kotlin/ │ │ │ └── software/ │ │ │ └── amazon/ │ │ │ └── app/ │ │ │ └── platform/ │ │ │ └── presenter/ │ │ │ └── molecule/ │ │ │ └── IosMoleculeScopeFactory.kt │ │ ├── linuxMain/ │ │ │ └── kotlin/ │ │ │ └── software/ │ │ │ └── amazon/ │ │ │ └── app/ │ │ │ └── platform/ │ │ │ └── presenter/ │ │ │ └── molecule/ │ │ │ └── LinuxMoleculeScopeFactory.kt │ │ └── wasmJsMain/ │ │ └── kotlin/ │ │ └── software/ │ │ └── amazon/ │ │ └── app/ │ │ └── platform/ │ │ └── presenter/ │ │ └── molecule/ │ │ └── WasmJsMoleculeScopeFactory.kt │ ├── public/ │ │ ├── api/ │ │ │ ├── android/ │ │ │ │ └── public.api │ │ │ └── desktop/ │ │ │ └── public.api │ │ ├── build.gradle │ │ └── src/ │ │ ├── commonMain/ │ │ │ └── kotlin/ │ │ │ └── software/ │ │ │ └── amazon/ │ │ │ └── app/ │ │ │ └── platform/ │ │ │ └── presenter/ │ │ │ └── molecule/ │ │ │ ├── LaunchMoleculePresenter.kt │ │ │ ├── MoleculePresenter.kt │ │ │ ├── MoleculeScope.kt │ │ │ ├── MoleculeScopeFactory.kt │ │ │ ├── ReturningCompositionLocalProvider.kt │ │ │ └── backgesture/ │ │ │ ├── BackEventPresenter.kt │ │ │ ├── BackGestureDispatcherPresenter.kt │ │ │ └── CommonBackGestureDispatcherPresenter.kt │ │ └── commonTest/ │ │ └── kotlin/ │ │ └── software/ │ │ └── amazon/ │ │ └── app/ │ │ └── platform/ │ │ └── presenter/ │ │ └── molecule/ │ │ ├── LaunchMoleculePresenterTest.kt │ │ ├── MoleculeScopeTest.kt │ │ ├── OnEventMemoizationTest.kt │ │ └── backgesture/ │ │ └── CommonBackGestureDispatcherPresenterTest.kt │ └── testing/ │ ├── api/ │ │ ├── android/ │ │ │ └── testing.api │ │ └── desktop/ │ │ └── testing.api │ ├── build.gradle │ └── src/ │ ├── commonMain/ │ │ └── kotlin/ │ │ └── software/ │ │ └── amazon/ │ │ └── app/ │ │ └── platform/ │ │ └── presenter/ │ │ └── molecule/ │ │ ├── FakeMoleculeScopeFactory.kt │ │ ├── TestMoleculeScope.kt │ │ ├── TestPresenter.kt │ │ └── backgesture/ │ │ └── TestBackGestureDispatcherPresenter.kt │ └── commonTest/ │ └── kotlin/ │ └── software/ │ └── amazon/ │ └── app/ │ └── platform/ │ └── presenter/ │ └── molecule/ │ ├── FakeMoleculeScopeFactoryTest.kt │ ├── TestMoleculeScopeTest.kt │ ├── TestPresenterTest.kt │ └── backgesture/ │ └── TestBackGestureDispatcherPresenterTest.kt ├── recipes/ │ ├── app/ │ │ ├── build.gradle │ │ └── src/ │ │ ├── androidMain/ │ │ │ ├── AndroidManifest.xml │ │ │ └── kotlin/ │ │ │ └── software/ │ │ │ └── amazon/ │ │ │ └── app/ │ │ │ └── platform/ │ │ │ └── recipes/ │ │ │ ├── AndroidAppComponent.kt │ │ │ ├── AndroidApplication.kt │ │ │ ├── MainActivity.kt │ │ │ └── MainActivityViewModel.kt │ │ ├── commonMain/ │ │ │ └── kotlin/ │ │ │ └── software/ │ │ │ └── amazon/ │ │ │ └── app/ │ │ │ └── platform/ │ │ │ └── recipes/ │ │ │ ├── AppComponent.kt │ │ │ ├── DemoApplication.kt │ │ │ └── TemplateProvider.kt │ │ ├── desktopMain/ │ │ │ └── kotlin/ │ │ │ └── software/ │ │ │ └── amazon/ │ │ │ └── app/ │ │ │ └── platform/ │ │ │ └── recipes/ │ │ │ ├── DesktopApp.kt │ │ │ ├── DesktopAppComponent.kt │ │ │ └── Main.kt │ │ ├── iosMain/ │ │ │ └── kotlin/ │ │ │ └── software/ │ │ │ └── amazon/ │ │ │ └── app/ │ │ │ └── platform/ │ │ │ └── recipes/ │ │ │ ├── IosAppComponent.kt │ │ │ └── MainViewController.kt │ │ └── wasmJsMain/ │ │ ├── kotlin/ │ │ │ └── software/ │ │ │ └── amazon/ │ │ │ └── app/ │ │ │ └── platform/ │ │ │ └── recipes/ │ │ │ ├── Main.kt │ │ │ └── WasmJsAppComponent.kt │ │ └── resources/ │ │ ├── index.html │ │ └── styles.css │ ├── common/ │ │ └── impl/ │ │ ├── build.gradle │ │ └── src/ │ │ └── commonMain/ │ │ └── kotlin/ │ │ └── software/ │ │ └── amazon/ │ │ └── app/ │ │ └── platform/ │ │ └── recipes/ │ │ ├── appbar/ │ │ │ ├── AppBarConfig.kt │ │ │ ├── AppBarConfigModel.kt │ │ │ └── menu/ │ │ │ └── MenuPresenter.kt │ │ ├── backstack/ │ │ │ ├── CrossSlideBackstackPresenter.kt │ │ │ ├── CrossSlideBackstackRenderer.kt │ │ │ ├── PresenterBackstackScope.kt │ │ │ └── presenter/ │ │ │ └── BackstackChildPresenter.kt │ │ ├── landing/ │ │ │ ├── LandingPresenter.kt │ │ │ └── LandingRenderer.kt │ │ ├── nav3/ │ │ │ ├── Navigation3ChildPresenter.kt │ │ │ ├── Navigation3ChildRenderer.kt │ │ │ ├── Navigation3HomePresenter.kt │ │ │ └── Navigation3HomeRenderer.kt │ │ ├── saveable/ │ │ │ └── ReturningSaveableStateHolder.kt │ │ ├── swiftui/ │ │ │ ├── SwiftUiChildPresenter.kt │ │ │ └── SwiftUiHomePresenter.kt │ │ └── template/ │ │ ├── RecipesAppTemplate.kt │ │ ├── RootPresenter.kt │ │ └── RootPresenterRenderer.kt │ └── recipesIosApp/ │ ├── recipesIosApp/ │ │ ├── Assets.xcassets/ │ │ │ ├── AccentColor.colorset/ │ │ │ │ └── Contents.json │ │ │ ├── AppIcon.appiconset/ │ │ │ │ └── Contents.json │ │ │ └── Contents.json │ │ ├── ContentView.swift │ │ ├── Info.plist │ │ ├── PresenterViews/ │ │ │ ├── AppPlatform+Extensions.swift │ │ │ ├── MoleculePresenterWrapper.swift │ │ │ ├── PresenterView.swift │ │ │ └── PresenterViewModel.swift │ │ ├── RecipesIosApp.swift │ │ └── SwiftUI/ │ │ ├── SwiftUiChildPresenterView.swift │ │ ├── SwiftUiHomePresenterBuilder.swift │ │ ├── SwiftUiHomePresenterView.swift │ │ └── SwiftUiRootPresenterView.swift │ └── recipesIosApp.xcodeproj/ │ └── project.pbxproj ├── renderer/ │ └── public/ │ ├── api/ │ │ ├── android/ │ │ │ └── public.api │ │ └── desktop/ │ │ └── public.api │ ├── build.gradle │ └── src/ │ ├── commonMain/ │ │ └── kotlin/ │ │ └── software/ │ │ └── amazon/ │ │ └── app/ │ │ └── platform/ │ │ └── renderer/ │ │ ├── BaseRendererFactory.kt │ │ ├── Renderer.kt │ │ ├── RendererComponent.kt │ │ ├── RendererFactory.kt │ │ ├── RendererGraph.kt │ │ └── RendererScope.kt │ └── commonTest/ │ └── kotlin/ │ └── software/ │ └── amazon/ │ └── app/ │ └── platform/ │ └── renderer/ │ └── BaseRendererFactoryTest.kt ├── renderer-android-view/ │ └── public/ │ ├── api/ │ │ └── public.api │ ├── build.gradle │ └── src/ │ ├── androidInstrumentedTest/ │ │ ├── AndroidManifest.xml │ │ ├── kotlin/ │ │ │ └── software/ │ │ │ └── amazon/ │ │ │ └── app/ │ │ │ └── platform/ │ │ │ ├── presenter/ │ │ │ │ └── molecule/ │ │ │ │ └── backgesture/ │ │ │ │ └── ForwardBackPressEventsToPresentersAndroidTest.kt │ │ │ └── renderer/ │ │ │ ├── AndroidRendererFactoryTest.kt │ │ │ ├── RecyclerViewViewHolderRendererTest.kt │ │ │ ├── TestActivity.kt │ │ │ ├── TestApplication.kt │ │ │ ├── ViewBindingRendererTest.kt │ │ │ └── ViewRendererTest.kt │ │ └── res/ │ │ └── layout/ │ │ └── viewbinding_layout.xml │ └── androidMain/ │ └── kotlin/ │ └── software/ │ └── amazon/ │ └── app/ │ └── platform/ │ ├── presenter/ │ │ └── molecule/ │ │ └── backgesture/ │ │ └── BackGestureDispatcherPresenterAndroid.kt │ └── renderer/ │ ├── AndroidRendererFactory.kt │ ├── BaseAndroidViewRenderer.kt │ ├── RecyclerViewViewHolderRenderer.kt │ ├── ViewBindingRenderer.kt │ ├── ViewRenderer.kt │ └── template/ │ └── AndroidTemplateRenderer.kt ├── renderer-compose-multiplatform/ │ └── public/ │ ├── api/ │ │ ├── android/ │ │ │ └── public.api │ │ └── desktop/ │ │ └── public.api │ ├── build.gradle │ └── src/ │ ├── androidInstrumentedTest/ │ │ ├── AndroidManifest.xml │ │ └── kotlin/ │ │ └── software/ │ │ └── amazon/ │ │ └── app/ │ │ └── platform/ │ │ ├── presenter/ │ │ │ └── molecule/ │ │ │ └── backgesture/ │ │ │ └── ForwardBackPressEventsToPresentersComposeTest.kt │ │ └── renderer/ │ │ ├── ComposeAndroidRendererFactoryDeviceTest.kt │ │ ├── TestActivity.kt │ │ └── TestApplication.kt │ ├── androidMain/ │ │ └── kotlin/ │ │ └── software/ │ │ └── amazon/ │ │ └── app/ │ │ └── platform/ │ │ └── renderer/ │ │ ├── AndroidViewWithinComposeRenderer.kt │ │ ├── BaseComposeWithinAndroidViewRenderer.kt │ │ ├── ComposeAndroidRendererFactory.kt │ │ └── ComposeWithinAndroidViewRenderer.kt │ ├── androidUnitTest/ │ │ └── kotlin/ │ │ └── software/ │ │ └── amazon/ │ │ └── app/ │ │ └── platform/ │ │ └── renderer/ │ │ └── ComposeAndroidRendererFactoryTest.kt │ ├── commonMain/ │ │ └── kotlin/ │ │ └── software/ │ │ └── amazon/ │ │ └── app/ │ │ └── platform/ │ │ ├── presenter/ │ │ │ └── molecule/ │ │ │ └── backgesture/ │ │ │ └── BackGestureDispatcherPresenterCompose.kt │ │ └── renderer/ │ │ ├── BaseComposeRenderer.kt │ │ ├── ComposeRenderer.kt │ │ └── ComposeRendererFactory.kt │ └── desktopTest/ │ └── kotlin/ │ └── software/ │ └── amazon/ │ └── app/ │ └── platform/ │ └── renderer/ │ ├── ComposeRendererFactoryTest.kt │ └── ComposeRendererTest.kt ├── robot/ │ └── public/ │ ├── api/ │ │ ├── android/ │ │ │ └── public.api │ │ └── desktop/ │ │ └── public.api │ ├── build.gradle │ └── src/ │ ├── androidMain/ │ │ └── kotlin/ │ │ └── software/ │ │ └── amazon/ │ │ └── app/ │ │ └── platform/ │ │ └── robot/ │ │ ├── AndroidViewRobot.kt │ │ ├── DefaultRootMatcherProvider.kt │ │ └── RootMatcherProvider.kt │ ├── androidUnitTest/ │ │ └── kotlin/ │ │ └── software/ │ │ └── amazon/ │ │ └── app/ │ │ └── platform/ │ │ └── robot/ │ │ └── WaiterTest.kt │ ├── commonMain/ │ │ └── kotlin/ │ │ └── software/ │ │ └── amazon/ │ │ └── app/ │ │ └── platform/ │ │ └── robot/ │ │ ├── Robot.kt │ │ ├── RobotComponent.kt │ │ ├── RobotGraph.kt │ │ └── internal/ │ │ └── RobotInternals.kt │ ├── commonTest/ │ │ └── kotlin/ │ │ └── software/ │ │ └── amazon/ │ │ └── app/ │ │ └── platform/ │ │ └── robot/ │ │ └── RobotTest.kt │ └── noWasmJsMain/ │ └── kotlin/ │ └── software/ │ └── amazon/ │ └── app/ │ └── platform/ │ └── robot/ │ └── Waiter.kt ├── robot-compose-multiplatform/ │ └── public/ │ ├── api/ │ │ ├── android/ │ │ │ └── public.api │ │ └── desktop/ │ │ └── public.api │ ├── build.gradle │ └── src/ │ ├── appleAndDesktopTest/ │ │ └── kotlin/ │ │ └── software/ │ │ └── amazon/ │ │ └── app/ │ │ └── platform/ │ │ └── robot/ │ │ └── ComposeRobotTest.kt │ └── commonMain/ │ └── kotlin/ │ └── software/ │ └── amazon/ │ └── app/ │ └── platform/ │ └── robot/ │ ├── ComposeInteractionsProvider.kt │ └── ComposeRobot.kt ├── robot-internal/ │ └── public/ │ ├── api/ │ │ ├── android/ │ │ │ └── public.api │ │ └── desktop/ │ │ └── public.api │ ├── build.gradle │ └── src/ │ ├── androidMain/ │ │ └── kotlin/ │ │ └── software/ │ │ └── amazon/ │ │ └── app/ │ │ └── platform/ │ │ └── robot/ │ │ └── internal/ │ │ └── DefaultRootScope.kt │ ├── commonMain/ │ │ └── kotlin/ │ │ └── software/ │ │ └── amazon/ │ │ └── app/ │ │ └── platform/ │ │ └── robot/ │ │ └── internal/ │ │ ├── DefaultRootScope.kt │ │ ├── RootScope.kt │ │ └── RootScopeProvider.kt │ ├── commonTest/ │ │ └── kotlin/ │ │ └── software/ │ │ └── amazon/ │ │ └── app/ │ │ └── platform/ │ │ └── robot/ │ │ └── internal/ │ │ └── RootScopeTest.kt │ ├── desktopMain/ │ │ └── kotlin/ │ │ └── software/ │ │ └── amazon/ │ │ └── app/ │ │ └── platform/ │ │ └── robot/ │ │ └── internal/ │ │ └── DefaultRootScope.kt │ ├── nativeMain/ │ │ └── kotlin/ │ │ └── software/ │ │ └── amazon/ │ │ └── app/ │ │ └── platform/ │ │ └── robot/ │ │ └── internal/ │ │ └── DefaultRootScope.kt │ └── wasmJsMain/ │ └── kotlin/ │ └── software/ │ └── amazon/ │ └── app/ │ └── platform/ │ └── robot/ │ └── internal/ │ └── DefaultRootScope.kt ├── sample/ │ ├── app/ │ │ ├── build.gradle │ │ ├── lint.xml │ │ └── src/ │ │ ├── androidInstrumentedTest/ │ │ │ └── kotlin/ │ │ │ └── software/ │ │ │ └── amazon/ │ │ │ └── app/ │ │ │ └── platform/ │ │ │ └── sample/ │ │ │ ├── AndroidLoginUiTest.kt │ │ │ ├── TestAndroidAppGraph.kt │ │ │ ├── TestAndroidApplication.kt │ │ │ └── TestRunner.kt │ │ ├── androidMain/ │ │ │ ├── AndroidManifest.xml │ │ │ ├── kotlin/ │ │ │ │ └── software/ │ │ │ │ └── amazon/ │ │ │ │ └── app/ │ │ │ │ └── platform/ │ │ │ │ └── sample/ │ │ │ │ ├── AndroidAppGraph.kt │ │ │ │ ├── AndroidApplication.kt │ │ │ │ ├── MainActivity.kt │ │ │ │ └── MainActivityViewModel.kt │ │ │ └── res/ │ │ │ ├── drawable/ │ │ │ │ ├── ic_launcher_background.xml │ │ │ │ └── ic_launcher_foreground.xml │ │ │ ├── mipmap-anydpi/ │ │ │ │ ├── ic_launcher.xml │ │ │ │ └── ic_launcher_round.xml │ │ │ └── values/ │ │ │ └── strings.xml │ │ ├── commonMain/ │ │ │ └── kotlin/ │ │ │ └── software/ │ │ │ └── amazon/ │ │ │ └── app/ │ │ │ └── platform/ │ │ │ └── sample/ │ │ │ ├── AppGraph.kt │ │ │ ├── DemoApplication.kt │ │ │ └── TemplateProvider.kt │ │ ├── desktopMain/ │ │ │ └── kotlin/ │ │ │ └── software/ │ │ │ └── amazon/ │ │ │ └── app/ │ │ │ └── platform/ │ │ │ └── sample/ │ │ │ ├── DesktopApp.kt │ │ │ ├── DesktopAppGraph.kt │ │ │ └── Main.kt │ │ ├── desktopTest/ │ │ │ └── kotlin/ │ │ │ └── software/ │ │ │ └── amazon/ │ │ │ └── app/ │ │ │ └── platform/ │ │ │ └── sample/ │ │ │ ├── LoginUiTest.kt │ │ │ ├── TestAnimationHelper.kt │ │ │ └── TestDesktopAppGraph.kt │ │ ├── iosMain/ │ │ │ └── kotlin/ │ │ │ └── software/ │ │ │ └── amazon/ │ │ │ └── app/ │ │ │ └── platform/ │ │ │ └── sample/ │ │ │ ├── IosAppGraph.kt │ │ │ └── MainViewController.kt │ │ └── wasmJsMain/ │ │ ├── kotlin/ │ │ │ └── software/ │ │ │ └── amazon/ │ │ │ └── app/ │ │ │ └── platform/ │ │ │ └── sample/ │ │ │ ├── Main.kt │ │ │ └── WasmJsAppGraph.kt │ │ └── resources/ │ │ ├── index.html │ │ └── styles.css │ ├── iosApp/ │ │ ├── Configuration/ │ │ │ └── Config.xcconfig │ │ ├── iosApp/ │ │ │ ├── Assets.xcassets/ │ │ │ │ ├── AccentColor.colorset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── AppIcon.appiconset/ │ │ │ │ │ └── Contents.json │ │ │ │ └── Contents.json │ │ │ ├── ComposeContentView.swift │ │ │ ├── Info.plist │ │ │ ├── Preview Content/ │ │ │ │ └── Preview Assets.xcassets/ │ │ │ │ └── Contents.json │ │ │ └── iOSApp.swift │ │ └── iosApp.xcodeproj/ │ │ └── project.pbxproj │ ├── login/ │ │ ├── impl/ │ │ │ ├── build.gradle │ │ │ └── src/ │ │ │ ├── appleAndDesktopTest/ │ │ │ │ └── kotlin/ │ │ │ │ └── software/ │ │ │ │ └── amazon/ │ │ │ │ └── app/ │ │ │ │ └── platform/ │ │ │ │ └── sample/ │ │ │ │ └── login/ │ │ │ │ └── LoginRendererTest.kt │ │ │ ├── commonMain/ │ │ │ │ └── kotlin/ │ │ │ │ └── software/ │ │ │ │ └── amazon/ │ │ │ │ └── app/ │ │ │ │ └── platform/ │ │ │ │ └── sample/ │ │ │ │ └── login/ │ │ │ │ ├── LoginPresenterImpl.kt │ │ │ │ └── LoginRenderer.kt │ │ │ └── commonTest/ │ │ │ └── kotlin/ │ │ │ └── software/ │ │ │ └── amazon/ │ │ │ └── app/ │ │ │ └── platform/ │ │ │ └── sample/ │ │ │ └── login/ │ │ │ └── LoginPresenterImplTest.kt │ │ ├── impl-robots/ │ │ │ ├── build.gradle │ │ │ └── src/ │ │ │ └── commonMain/ │ │ │ └── kotlin/ │ │ │ └── software/ │ │ │ └── amazon/ │ │ │ └── app/ │ │ │ └── platform/ │ │ │ └── sample/ │ │ │ └── login/ │ │ │ └── LoginRobot.kt │ │ └── public/ │ │ ├── build.gradle │ │ └── src/ │ │ └── commonMain/ │ │ └── kotlin/ │ │ └── software/ │ │ └── amazon/ │ │ └── app/ │ │ └── platform/ │ │ └── sample/ │ │ └── login/ │ │ └── LoginPresenter.kt │ ├── navigation/ │ │ ├── impl/ │ │ │ ├── build.gradle │ │ │ └── src/ │ │ │ ├── commonMain/ │ │ │ │ └── kotlin/ │ │ │ │ └── software/ │ │ │ │ └── amazon/ │ │ │ │ └── app/ │ │ │ │ └── platform/ │ │ │ │ └── sample/ │ │ │ │ └── navigation/ │ │ │ │ └── NavigationPresenterImpl.kt │ │ │ └── commonTest/ │ │ │ └── kotlin/ │ │ │ └── software/ │ │ │ └── amazon/ │ │ │ └── app/ │ │ │ └── platform/ │ │ │ └── sample/ │ │ │ └── navigation/ │ │ │ └── NavigationPresenterImplTest.kt │ │ └── public/ │ │ ├── build.gradle │ │ └── src/ │ │ └── commonMain/ │ │ └── kotlin/ │ │ └── software/ │ │ └── amazon/ │ │ └── app/ │ │ └── platform/ │ │ └── sample/ │ │ └── navigation/ │ │ └── NavigationPresenter.kt │ ├── templates/ │ │ ├── impl/ │ │ │ ├── build.gradle │ │ │ └── src/ │ │ │ ├── androidMain/ │ │ │ │ ├── kotlin/ │ │ │ │ │ └── software/ │ │ │ │ │ └── amazon/ │ │ │ │ │ └── app/ │ │ │ │ │ └── platform/ │ │ │ │ │ └── sample/ │ │ │ │ │ └── template/ │ │ │ │ │ └── AndroidSampleAppTemplateRenderer.kt │ │ │ │ └── res/ │ │ │ │ └── layout/ │ │ │ │ └── sample_app_template_root.xml │ │ │ └── commonMain/ │ │ │ └── kotlin/ │ │ │ └── software/ │ │ │ └── amazon/ │ │ │ └── app/ │ │ │ └── platform/ │ │ │ └── sample/ │ │ │ └── template/ │ │ │ └── ComposeSampleAppTemplateRenderer.kt │ │ └── public/ │ │ ├── build.gradle │ │ └── src/ │ │ ├── commonMain/ │ │ │ └── kotlin/ │ │ │ └── software/ │ │ │ └── amazon/ │ │ │ └── app/ │ │ │ └── platform/ │ │ │ └── sample/ │ │ │ └── template/ │ │ │ ├── SampleAppTemplate.kt │ │ │ ├── SampleAppTemplatePresenter.kt │ │ │ └── animation/ │ │ │ └── AnimationContentKey.kt │ │ └── commonTest/ │ │ └── kotlin/ │ │ └── software/ │ │ └── amazon/ │ │ └── app/ │ │ └── platform/ │ │ └── sample/ │ │ └── template/ │ │ └── SampleAppTemplatePresenterTest.kt │ └── user/ │ ├── impl/ │ │ ├── build.gradle │ │ └── src/ │ │ ├── androidMain/ │ │ │ └── kotlin/ │ │ │ └── software/ │ │ │ └── amazon/ │ │ │ └── app/ │ │ │ └── platform/ │ │ │ └── sample/ │ │ │ └── user/ │ │ │ └── AndroidAnimationsHelper.kt │ │ ├── appleAndDesktopMain/ │ │ │ └── kotlin/ │ │ │ └── software/ │ │ │ └── amazon/ │ │ │ └── app/ │ │ │ └── platform/ │ │ │ └── sample/ │ │ │ └── user/ │ │ │ └── DefaultAnimationsHelper.kt │ │ ├── commonMain/ │ │ │ └── kotlin/ │ │ │ └── software/ │ │ │ └── amazon/ │ │ │ └── app/ │ │ │ └── platform/ │ │ │ └── sample/ │ │ │ └── user/ │ │ │ ├── AnimationHelper.kt │ │ │ ├── SessionTimeout.kt │ │ │ ├── UserGraph.kt │ │ │ ├── UserImpl.kt │ │ │ ├── UserManagerImpl.kt │ │ │ ├── UserPageDetailPresenter.kt │ │ │ ├── UserPageDetailRenderer.kt │ │ │ ├── UserPageListPresenter.kt │ │ │ ├── UserPageListRenderer.kt │ │ │ └── UserPagePresenterImpl.kt │ │ ├── commonTest/ │ │ │ └── kotlin/ │ │ │ └── software/ │ │ │ └── amazon/ │ │ │ └── app/ │ │ │ └── platform/ │ │ │ └── sample/ │ │ │ └── user/ │ │ │ ├── FakeAnimationHelper.kt │ │ │ ├── SessionTimeoutTest.kt │ │ │ ├── UserManagerImplTest.kt │ │ │ └── UserPagePresenterImplTest.kt │ │ └── wasmJsMain/ │ │ └── kotlin/ │ │ └── software/ │ │ └── amazon/ │ │ └── app/ │ │ └── platform/ │ │ └── sample/ │ │ └── user/ │ │ └── DefaultAnimationsHelper.kt │ ├── impl-robots/ │ │ ├── build.gradle │ │ └── src/ │ │ └── commonMain/ │ │ └── kotlin/ │ │ └── software/ │ │ └── amazon/ │ │ └── app/ │ │ └── platform/ │ │ └── sample/ │ │ └── user/ │ │ └── UserPageRobot.kt │ ├── public/ │ │ ├── build.gradle │ │ └── src/ │ │ └── commonMain/ │ │ └── kotlin/ │ │ └── software/ │ │ └── amazon/ │ │ └── app/ │ │ └── platform/ │ │ └── sample/ │ │ └── user/ │ │ ├── User.kt │ │ ├── UserManager.kt │ │ ├── UserPagePresenter.kt │ │ └── UserScope.kt │ └── testing/ │ ├── build.gradle │ └── src/ │ └── commonMain/ │ └── kotlin/ │ └── software/ │ └── amazon/ │ └── app/ │ └── platform/ │ └── sample/ │ └── user/ │ ├── FakeUser.kt │ └── FakeUserManager.kt ├── scope/ │ ├── public/ │ │ ├── api/ │ │ │ ├── android/ │ │ │ │ └── public.api │ │ │ └── desktop/ │ │ │ └── public.api │ │ ├── build.gradle │ │ └── src/ │ │ ├── commonMain/ │ │ │ └── kotlin/ │ │ │ └── software/ │ │ │ └── amazon/ │ │ │ └── app/ │ │ │ └── platform/ │ │ │ └── scope/ │ │ │ ├── RootScopeProvider.kt │ │ │ ├── Scope.kt │ │ │ ├── ScopeImpl.kt │ │ │ ├── Scoped.kt │ │ │ └── coroutine/ │ │ │ ├── CoroutineScopeScoped.kt │ │ │ └── CoroutineScopeService.kt │ │ └── commonTest/ │ │ └── kotlin/ │ │ └── software/ │ │ └── amazon/ │ │ └── app/ │ │ └── platform/ │ │ └── scope/ │ │ ├── ScopeTest.kt │ │ └── coroutine/ │ │ ├── CoroutineScopeScopedTest.kt │ │ └── CoroutineScopeServiceTest.kt │ └── testing/ │ ├── api/ │ │ ├── android/ │ │ │ └── testing.api │ │ └── desktop/ │ │ └── testing.api │ ├── build.gradle │ └── src/ │ ├── commonMain/ │ │ └── kotlin/ │ │ └── software/ │ │ └── amazon/ │ │ └── app/ │ │ └── platform/ │ │ └── scope/ │ │ ├── RunTestWithScope.kt │ │ └── TestScope.kt │ └── commonTest/ │ └── kotlin/ │ └── software/ │ └── amazon/ │ └── app/ │ └── platform/ │ └── scope/ │ ├── RunTestWithScopeTest.kt │ └── TestScopeTest.kt └── settings.gradle