IR refactor ProvisionalFunctionExpressionLowering
diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/ProvisionalFunctionExpressionLowering.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/ProvisionalFunctionExpressionLowering.kt
index 2ef8d27..217394f 100644
--- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/ProvisionalFunctionExpressionLowering.kt
+++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/ProvisionalFunctionExpressionLowering.kt
@@ -6,52 +6,40 @@
 package org.jetbrains.kotlin.backend.common.lower
 
 import org.jetbrains.kotlin.backend.common.BodyLoweringPass
-import org.jetbrains.kotlin.backend.common.FileLoweringPass
 import org.jetbrains.kotlin.ir.IrElement
-import org.jetbrains.kotlin.ir.IrStatement
 import org.jetbrains.kotlin.ir.declarations.IrDeclaration
-import org.jetbrains.kotlin.ir.declarations.IrFile
 import org.jetbrains.kotlin.ir.declarations.IrVariable
-import org.jetbrains.kotlin.ir.expressions.*
+import org.jetbrains.kotlin.ir.expressions.IrBody
+import org.jetbrains.kotlin.ir.expressions.IrCall
+import org.jetbrains.kotlin.ir.expressions.IrFunctionExpression
 import org.jetbrains.kotlin.ir.expressions.impl.IrBlockImpl
 import org.jetbrains.kotlin.ir.expressions.impl.IrFunctionReferenceImpl
-import org.jetbrains.kotlin.ir.util.remapTypes
-import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
-import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid
-import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
+import org.jetbrains.kotlin.ir.visitors.IrAbstractTransformer
 
 class ProvisionalFunctionExpressionLoweringContext(
-    val outer: ProvisionalFunctionExpressionLoweringContext? = null,
     val startOffset: Int? = null,
-    val endOffset: Int? = null)
+    val endOffset: Int? = null
+)
+
 class ProvisionalFunctionExpressionLowering :
-    IrElementTransformer<ProvisionalFunctionExpressionLoweringContext>,
+    IrAbstractTransformer<ProvisionalFunctionExpressionLoweringContext>(),
     BodyLoweringPass {
 
     override fun lower(irBody: IrBody, container: IrDeclaration) {
         irBody.transformChildren(this, ProvisionalFunctionExpressionLoweringContext())
     }
 
-    override fun visitCall(expression: IrCall, data: ProvisionalFunctionExpressionLoweringContext) = super.visitCall(
-        expression,
-        ProvisionalFunctionExpressionLoweringContext(
-            data,
-            expression.startOffset,
-            expression.endOffset
-        )
-    )
+    private fun withLocationOf(irElement: IrElement) =
+        ProvisionalFunctionExpressionLoweringContext(irElement.startOffset, irElement.endOffset)
 
-    override fun visitVariable(declaration: IrVariable, data: ProvisionalFunctionExpressionLoweringContext) = super.visitVariable(
-        declaration,
-        ProvisionalFunctionExpressionLoweringContext(
-            data,
-            declaration.startOffset,
-            declaration.endOffset
-        )
-    )
+    override fun visitCall(expression: IrCall, data: ProvisionalFunctionExpressionLoweringContext) =
+        super.visitCall(expression, withLocationOf(expression))
+
+    override fun visitVariable(declaration: IrVariable, data: ProvisionalFunctionExpressionLoweringContext) =
+        super.visitVariable(declaration, withLocationOf(declaration))
 
     override fun visitFunctionExpression(expression: IrFunctionExpression, data: ProvisionalFunctionExpressionLoweringContext): IrElement {
-        expression.transformChildren(this, ProvisionalFunctionExpressionLoweringContext(data))
+        expression.transformChildren(this, ProvisionalFunctionExpressionLoweringContext())
 
         val startOffset = data.startOffset ?: expression.startOffset
         val endOffset = data.endOffset ?: expression.endOffset