// ĠCopyright Ġ 2 0 0 0 - 2 0 2 1 ĠJetBrains Ġs . r . o . Ġand Ġcontributors . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ package Ġcom . intellij . util Ċ Ċ import Ġjava . util . concurrent . atomic . Atomic Boolean Ċ Ċ /** Ċ Ġ* ĠSk ips Ġ[ action ] Ġexecution Ġif Ġthis Ġor Ġother Ġblock Ġis Ġexecuting Ġwith Ġ[ this ] Ġ" atomic ". Ċ Ġ* ĠNeeds Ġto Ġbreak Ġthe Ġrecursion Ġlocally . Ċ Ġ*/ Ċ inline Ġfun ĠAtomic Boolean . lock Or Skip ( action : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠ Ġif Ġ(! compare AndSet ( false , Ġtrue )) Ġreturn ĊĠ Ġtry Ġ{ ĊĠĠĠ Ġaction () ĊĠ Ġ} ĊĠ Ġfinally Ġ{ ĊĠĠĠ Ġset ( false ) ĊĠ Ġ} Ċ }