package Ġcom . bad oo . reak t ive . utils . atomic Ċ Ċ import Ġcom . bad oo . reak t ive . utils . freeze Ċ Ċ actual Ġclass ĠAtomic Reference < T > Ġactual Ġconstructor ( ĊĠĠĠ Ġinitial Value : ĠT , ĊĠĠĠ Ġprivate Ġval Ġauto Freeze : ĠBoolean Ċ ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġdelegate Ġ= Ġkotlin . native . concurrent . Atomic Reference ( initial Value . freeze IfNeeded ()) ĊĊĠĠĠ Ġactual Ġvar Ġvalue : ĠT ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġdelegate . value ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelegate . value Ġ= Ġvalue . freeze IfNeeded () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġactual Ġfun Ġcompare AndSet ( expected Value : ĠT , ĠnewValue : ĠT ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġdelegate . compare AndSet ( expected Value , ĠnewValue . freeze IfNeeded ()) ĊĊĠĠĠ Ġprivate Ġfun ĠT . freeze IfNeeded (): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( auto Freeze ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfreeze () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} Ċ }