package Ġap pt ent ive . com . android . core Ċ Ċ import Ġandroidx . annotation . Worker Thread Ċ import Ġap pt ent ive . com . android . util . Internal Use Only Ċ Ċ @ Internal Use Only Ċ open Ġclass ĠObservable < T >( private Ġvar Ġ_ value : ĠT ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġob servers Ġ= Ġmutable ListOf <( T ) Ġ-> ĠUnit >() ĊĊĠĠĠ Ġopen Ġvar Ġvalue : ĠT ĊĠĠĠĠĠĠĠ Ġ@ Worker Thread Ġget () Ġ= Ġ_ value ĊĠĠĠĠĠĠĠ Ġ@ Worker Thread Ġprotected Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ value Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Observer s ( value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Worker Thread ĊĠĠĠ Ġfun Ġobserve ( observer : Ġ( T ) Ġ-> ĠUnit ): ĠSubscription Ġ{ ĊĠĠĠĠĠĠĠ Ġob servers . add ( observer ) ĊĠĠĠĠĠĠĠ Ġnotify Observer ( observer , Ġvalue ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠSubscription Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġunsubscribe () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove Observer ( observer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Worker Thread ĊĠĠĠ Ġfun Ġremove Observer ( observer : Ġ( T ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġob servers . remove ( observer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Worker Thread ĊĠĠĠ Ġprivate Ġfun Ġnotify Observer s ( value : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtemp Ġ= Ġob servers . toList () ĊĠĠĠĠĠĠĠ Ġfor Ġ( observer Ġin Ġtemp ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Observer ( observer , Ġvalue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnotify Observer ( observer : Ġ( T ) Ġ-> ĠUnit , Ġvalue : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġobserver ( value ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Internal Use Only Ċ interface ĠSubscription Ġ{ ĊĠĠĠ Ġfun Ġunsubscribe () Ċ } Ċ