FIR: make transformInplace to be thread safe if no transformation was done

^KT-50822 fixed
diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/visitors/FirTransformerUtil.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/visitors/FirTransformerUtil.kt
index cb5f3b9..fcd1d9e 100644
--- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/visitors/FirTransformerUtil.kt
+++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/visitors/FirTransformerUtil.kt
@@ -17,7 +17,9 @@
     while (iterator.hasNext()) {
         val next = iterator.next() as FirPureAbstractElement
         val result = next.transform<T, D>(transformer, data)
-        iterator.set(result)
+        if (result !== next) {
+            iterator.set(result)
+        }
     }
 }
 
@@ -36,7 +38,9 @@
             TransformData.Nothing -> continue
         }
         val result = next.transform<T, D>(transformer, data)
-        iterator.set(result)
+        if (result !== next) {
+            iterator.set(result)
+        }
     }
 }