/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 2 1 ĠJetBrains Ġs . r . o . Ġand ĠKotlin ĠProgramming ĠLanguage Ġcontributors . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe Ġlicense / LICENSE . txt Ġfile . Ċ Ġ*/ Ċ Ċ package Ġkotlin . native . concurrent Ċ Ċ // ĠOnly Ġfor Ġcompatibility Ġwith Ġshared ĠK / N Ġstdlib Ġcode Ċ Ċ internal Ġval ĠAny ?. is Frozen ĊĠĠĠ Ġinline Ġget () Ġ= Ġfalse Ċ Ċ internal Ġinline Ġfun Ġ< T > ĠT . freeze (): ĠT Ġ= Ġthis Ċ Ċ internal Ġclass ĠAtomic Reference < T >( public Ġvar Ġvalue : ĠT ) Ġ{ ĊĠĠĠ Ġpublic Ġfun Ġcompare And Swap ( expected : ĠT , Ġnew : ĠT ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( value Ġ== Ġexpected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġnew ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġold ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġvalue ĊĠĠĠ Ġ} ĊĠĠĠ Ġpublic Ġfun Ġcompare AndSet ( expected : ĠT , Ġnew : ĠT ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( value Ġ== Ġexpected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġnew ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} Ċ } Ċ