diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/SymbolLightModifierList.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/SymbolLightModifierList.kt index 41bb624ee37..bc498a15f66 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/SymbolLightModifierList.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/SymbolLightModifierList.kt @@ -97,10 +97,9 @@ internal class LazyModifiersBox( fun hasModifier(modifier: String): Boolean { modifiersMapReference.get()[modifier]?.let { return it } val newValues = computer(modifier) ?: mapOf(modifier to false) - do { - val currentMap = modifiersMapReference.get() - val newMap = currentMap.putAll(newValues) - } while (!modifiersMapReference.compareAndSet(currentMap, newMap)) + modifiersMapReference.updateAndGet { + it.putAll(newValues) + } return newValues[modifier] ?: error("Inconsistent state: $modifier") }