IR ValueRemapper -> IrExpressionTransformer
diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/ValueRemapper.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/ValueRemapper.kt
index e8c454c..e6fe8e9 100644
--- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/ValueRemapper.kt
+++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/ValueRemapper.kt
@@ -11,22 +11,26 @@
 import org.jetbrains.kotlin.ir.expressions.impl.IrGetValueImpl
 import org.jetbrains.kotlin.ir.expressions.impl.IrSetValueImpl
 import org.jetbrains.kotlin.ir.symbols.IrValueSymbol
-import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid
+import org.jetbrains.kotlin.ir.visitors.IrExpressionTransformer
 
-abstract class AbstractValueRemapper : IrElementTransformerVoid() {
+abstract class AbstractValueRemapper : IrExpressionTransformer() {
 
     protected abstract fun remapValue(oldValue: IrValueSymbol): IrValueSymbol?
 
-    override fun visitGetValue(expression: IrGetValue): IrExpression {
-        val newValue = remapValue(expression.symbol) ?: return expression
-        return expression.run { IrGetValueImpl(startOffset, endOffset, newValue, origin) }
-    }
-
-    override fun visitSetValue(expression: IrSetValue): IrExpression {
-        expression.transformChildrenVoid()
-        val newValue = remapValue(expression.symbol) ?: return expression
-        assert(newValue.owner.isAssignable)
-        return expression.run { IrSetValueImpl(startOffset, endOffset, type, newValue, value, origin) }
+    override fun transformExpression(expression: IrExpression): IrExpression {
+        when (expression) {
+            is IrGetValue -> {
+                val newValue = remapValue(expression.symbol) ?: return expression
+                return expression.run { IrGetValueImpl(startOffset, endOffset, newValue, origin) }
+            }
+            is IrSetValue -> {
+                val newValue = remapValue(expression.symbol) ?: return expression
+                assert(newValue.owner.isAssignable)
+                return expression.run { IrSetValueImpl(startOffset, endOffset, type, newValue, value, origin) }
+            }
+            else ->
+                return expression
+        }
     }
 }