package Ġcom . reactions . death lines . presentation . common Ċ Ċ import Ġandroidx . lifecycle . Lifecycle Owner Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġjava . util . concurrent . atomic . Atomic Boolean Ċ Ċ class ĠOperation LiveData < T >( private Ġval Ġoperation : ĠOperation LiveData < T >. () Ġ-> ĠUnit ) Ġ: ĠMutable LiveData < T >() Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġoper ated Ġ= ĠAtomic Boolean ( false ) ĊĊĠĠĠ Ġoverride Ġfun Ġobserve ( owner : ĠLifecycle Owner , Ġobserver : ĠObserver < in ĠT >) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . observe ( owner , Ġobserver ) ĊĊĠĠĠĠĠĠĠ Ġoperate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġobserve Fore ver ( observer : ĠObserver < in ĠT >) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . observe Fore ver ( observer ) ĊĊĠĠĠĠĠĠĠ Ġoperate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġoperate () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( value Ġ!= Ġnull Ġ&& Ġoper ated . get ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoperation () ĊĠĠĠĠĠĠĠ Ġoper ated . set ( true ) ĊĠĠĠ Ġ} Ċ }