/** Ċ Ġ* ĠDesign ed Ġand Ġdeveloped Ġby ĠA id an ĠFol le st ad Ġ(@ af ol le st ad ) Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ @ file : Suppress (" ClassName ", Ġ" unused ") Ċ Ċ package Ġcom . af ol le st ad . ul f ber ht Ċ Ċ import Ġcom . af ol le st ad . ul f ber ht . annotation . Module Ċ import Ġcom . af ol le st ad . ul f ber ht . common . Base Component Ċ import Ġcom . af ol le st ad . ul f ber ht . common . Base Module Ċ import Ġkotlin . reflect . K Class Ċ Ċ abstract Ġclass ĠTest Base Module Ġ: ĠBase Module Ġ{ ĊĠ Ġvar Ġis Destroyed : ĠBoolean Ġ= Ġfalse ĊĠ Ġoverride Ġval Ġcached Providers : ĠMutable Map < String , ĠProvider <* >> Ġ= Ġmutable Map Of () ĊĊĠ Ġoverride Ġfun Ġ< T Ġ: ĠAny > Ġget Provider ( ĊĠĠĠ Ġwanted Type : ĠK Class <* >, ĊĠĠĠ Ġgeneric Args : ĠSet < K Class <* >>, ĊĠĠĠ Ġqualifier : ĠString ?, ĊĠĠĠ Ġcalled By : ĠBase Component ? ĊĠ Ġ): ĠProvider < T >? Ġ= Ġnull ĊĊĠ Ġoverride Ġfun Ġdestroy () Ġ{ ĊĠĠĠ Ġis Destroyed Ġ= Ġtrue ĊĠĠĠ Ġsuper . destroy () ĊĠ Ġ} Ċ } Ċ Ċ @ Module Ċ class ĠModule 1 _ Module ( override Ġval Ġcomponent : ĠBase Component ) Ġ: ĠTest Base Module () Ċ Ċ @ Module Ċ class ĠModule 2 _ Module ( override Ġval Ġcomponent : ĠBase Component ) Ġ: ĠTest Base Module () Ċ Ċ @ Module Ċ class ĠModule 3 _ Module ( override Ġval Ġcomponent : ĠBase Component ) Ġ: ĠTest Base Module () Ċ