package Ġcom . fr ances co z oc che dd u . anim ator helpers Ċ Ċ import Ġkotlin . reflect . K Property Ċ Ċ abstract Ġclass ĠAnimated Value < Type >( initial Value : ĠType ) Ġ: ĠReadOnly Observable Animated Value < Type > Ġ{ ĊĊĠĠĠ Ġprotected Ġvar Ġ_ value Ġ= Ġinitial Value ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( field Ġ!= Ġvalue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonUpdate ?. invoke ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfinal Ġvar Ġvalue : ĠType ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ value ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ!= Ġ_ value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanimate To ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfinal Ġvar ĠonUpdate : Ġ(( ReadOnly Animated Value < Type >) Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠ Ġprotected Ġopen Ġfun Ġanimate To ( value : ĠType ) Ġ{} ĊĊĠĠĠ Ġoverride Ġfinal Ġoperator Ġfun ĠgetValue ( this Ref : ĠAny ?, Ġproperty : ĠK Property <* >) Ġ= Ġvalue ĊĊĠĠĠ Ġoperator Ġfun ĠsetValue ( this Ref : ĠAny ?, Ġproperty : ĠK Property <* >, Ġvalue : ĠType ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . value Ġ= Ġvalue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġfun Ġreach () Ċ Ċ }