/* Ċ Ġ* ĠCopyright Ġ 2 0 1 7 - 2 0 1 8 Ġthe Ġoriginal Ġauthor Ġor Ġauthors . Ċ Ġ* Ċ Ġ* Ġ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 . Ċ Ġ*/ Ċ Ċ package Ġorg . k oin . android . scope . ext . android Ċ Ċ import Ġandroid . arch . lifecycle . Lifecycle Ċ import Ġandroid . arch . lifecycle . Lifecycle Owner Ċ import Ġandroid . content . Component Callbacks Ċ import Ġorg . k oin . android . ext . android . get K oin Ċ import Ġorg . k oin . android . scope . Scope Observer Ċ import Ġorg . k oin . core . scope . Scope Ċ Ċ /** Ċ Ġ* ĠLifecycle Owner Ġextensions Ċ Ġ* Ċ Ġ* Ġ@ author ĠAr na ud ĠG i ul ian i Ċ Ġ*/ Ċ Ċ /** Ċ Ġ* ĠSet Ġa ĠScope ĠObserver Ġonto Ġthe Ġactual ĠLifecycle Owner Ġcomponent Ċ Ġ* Ġwill Ġclose Ġthe Ġbound Ġscopes Ġon Ġlifecycle Ġevent Ċ Ġ* Ġ@ see ĠScope Observer Ċ Ġ* Ġ@ param Ġevent Ġ: Ġlifecycle Ġevent Ġ- Ġdefault ĠON _ DESTROY Ċ Ġ* Ġ@ param Ġscopes Ċ Ġ*/ Ċ fun ĠLifecycle Owner . bind Scope ( scope : ĠScope , Ġevent : ĠLifecycle . Event Ġ= ĠLifecycle . Event . ON _ DESTROY ) Ġ{ ĊĠĠĠ Ġlifecycle . add Observer ( Scope Observer ( event , Ġthis , Ġscope )) Ċ } Ċ Ċ private Ġfun ĠLifecycle Owner . get K oin () Ġ= Ġ( this Ġas ĠComponent Callbacks ). get K oin () Ċ Ċ /** Ċ Ġ* ĠGet Ġor Ġcreate ĠScope Ċ Ġ* Ġ@ param Ġscope ĠId Ċ Ġ*/ Ċ fun ĠLifecycle Owner . get OrCreate Scope ( id Ġ: ĠString ) Ġ: ĠScope Ġ{ ĊĠĠĠ Ġreturn Ġget K oin (). get OrCreate Scope ( id ) Ċ } Ċ Ċ /** Ċ Ġ* ĠGet ĠScope Ċ Ġ* Ġ@ param Ġscope ĠId Ċ Ġ*/ Ċ fun ĠLifecycle Owner . get Scope ( id Ġ: ĠString ) Ġ: ĠScope Ġ{ ĊĠĠĠ Ġreturn Ġget K oin (). get Scope ( id ) Ċ } Ċ Ċ /** Ċ Ġ* ĠCreate ĠScope Ċ Ġ* Ġ@ param Ġscope ĠId Ċ Ġ*/ Ċ fun ĠLifecycle Owner . create Scope ( id Ġ: ĠString ) Ġ: ĠScope Ġ{ ĊĠĠĠ Ġreturn Ġget K oin (). create Scope ( id ) Ċ }