diff --git a/idea/resources/messages/KotlinBundle.properties b/idea/resources/messages/KotlinBundle.properties
index f774e08cf3611..34d1e36acc973 100644
--- a/idea/resources/messages/KotlinBundle.properties
+++ b/idea/resources/messages/KotlinBundle.properties
@@ -665,7 +665,7 @@ test.integration.message.text.create.test.in.the.same.source.root=Create test in
test.integration.message.text.kotlin.class=Kotlin class ''{0}'' already exists. Do you want to update it?
test.integration.title.no.test.roots.found=No Test Roots Found
-slicer.text.in=\ in {0}
+slicer.text.in=in
slicer.text.tracking.enclosing.lambda=\ (Tracking enclosing lambda)
slicer.text.tracking.lambda.calls=\ (Tracking lambda calls)
slicer.text.tracking.lambda.argument=\ (Tracking lambda parameter)
diff --git a/idea/src/org/jetbrains/kotlin/idea/slicer/KotlinSliceUsageCellRenderer.kt b/idea/src/org/jetbrains/kotlin/idea/slicer/KotlinSliceUsageCellRenderer.kt
index 123bb3b71c3db..57a184f70341f 100644
--- a/idea/src/org/jetbrains/kotlin/idea/slicer/KotlinSliceUsageCellRenderer.kt
+++ b/idea/src/org/jetbrains/kotlin/idea/slicer/KotlinSliceUsageCellRenderer.kt
@@ -47,26 +47,36 @@ object KotlinSliceUsageCellRenderer : SliceUsageCellRendererBase() {
append(behaviour.slicePresentationPrefix, SimpleTextAttributes.REGULAR_BOLD_ATTRIBUTES)
}
+ containerSuffix(sliceUsage)?.let {
+ append(" ")
+ append(it, SimpleTextAttributes.GRAY_ATTRIBUTES)
+ }
+ }
+
+ fun containerSuffix(sliceUsage: SliceUsage): String? {
val declaration = sliceUsage.element?.parents?.firstOrNull {
it is KtClass ||
it is KtObjectDeclaration && !it.isObjectLiteral() ||
it is KtNamedFunction && !it.isLocal ||
it is KtProperty && !it.isLocal ||
it is KtConstructor<*>
- } as? KtDeclaration ?: return
+ } as? KtDeclaration ?: return null
- append(KotlinBundle.message("slicer.text.in", ""), SimpleTextAttributes.GRAY_ATTRIBUTES)
+ return buildString {
+ append(KotlinBundle.message("slicer.text.in", ""))
+ append(" ")
- val descriptor = declaration.unsafeResolveToDescriptor()
+ val descriptor = declaration.unsafeResolveToDescriptor()
- if (!descriptor.isExtension && descriptor !is ConstructorDescriptor && !descriptor.isCompanionObject()) {
- val containingClassifier = descriptor.containingDeclaration as? ClassifierDescriptor
- if (containingClassifier != null) {
- append(descriptorRenderer.render(containingClassifier), SimpleTextAttributes.GRAY_ATTRIBUTES)
- append(".", SimpleTextAttributes.GRAY_ATTRIBUTES)
+ if (!descriptor.isExtension && descriptor !is ConstructorDescriptor && !descriptor.isCompanionObject()) {
+ val containingClassifier = descriptor.containingDeclaration as? ClassifierDescriptor
+ if (containingClassifier != null) {
+ append(descriptorRenderer.render(containingClassifier))
+ append(".")
+ }
}
- }
- append(descriptorRenderer.render(descriptor), SimpleTextAttributes.GRAY_ATTRIBUTES)
+ append(descriptorRenderer.render(descriptor))
+ }
}
}
\ No newline at end of file
diff --git a/idea/testData/slicer/inflow/abstractFun.leafGroups.txt b/idea/testData/slicer/inflow/abstractFun.leafGroups.txt
index c27d13bd50f23..e1f13ba86ad6f 100644
--- a/idea/testData/slicer/inflow/abstractFun.leafGroups.txt
+++ b/idea/testData/slicer/inflow/abstractFun.leafGroups.txt
@@ -1,8 +1,7 @@
-12 foo(1)
-4 fun foo(p: Int)
-12 foo(1)
-
-17 i.foo(2)
-4 fun foo(p: Int)
-17 i.foo(2)
+12 foo(1) (in C.f())
+4 fun foo(p: Int) (in I.foo(Int))
+12 foo(1) (in C.f())
+17 i.foo(2) (in f(I))
+4 fun foo(p: Int) (in I.foo(Int))
+17 i.foo(2) (in f(I))
diff --git a/idea/testData/slicer/inflow/abstractFun.nullnessGroups.txt b/idea/testData/slicer/inflow/abstractFun.nullnessGroups.txt
index 8f0046bd5c621..acdfac598e35e 100644
--- a/idea/testData/slicer/inflow/abstractFun.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/abstractFun.nullnessGroups.txt
@@ -1,3 +1,3 @@
[NotNull Values]
-4 fun foo(p: Int)
-4 fun foo(p: Int)
+4 fun foo(p: Int) (in I.foo(Int))
+4 fun foo(p: Int) (in I.foo(Int))
diff --git a/idea/testData/slicer/inflow/abstractFun.results.txt b/idea/testData/slicer/inflow/abstractFun.results.txt
index d2d4c3e8ad605..a847870535419 100644
--- a/idea/testData/slicer/inflow/abstractFun.results.txt
+++ b/idea/testData/slicer/inflow/abstractFun.results.txt
@@ -1,3 +1,3 @@
-4 fun foo(p: Int)
-12 foo(1)
-17 i.foo(2)
+4 fun foo(p: Int) (in I.foo(Int))
+12 foo(1) (in C.f())
+17 i.foo(2) (in f(I))
diff --git a/idea/testData/slicer/inflow/anonymousFunBodyExpression.leafGroups.txt b/idea/testData/slicer/inflow/anonymousFunBodyExpression.leafGroups.txt
index 86641a4fb6c55..a98acf627a442 100644
--- a/idea/testData/slicer/inflow/anonymousFunBodyExpression.leafGroups.txt
+++ b/idea/testData/slicer/inflow/anonymousFunBodyExpression.leafGroups.txt
@@ -1,15 +1,14 @@
-4 return f(1)
-8 val x = foo(fun(n: Int) = n)
-8 val x = foo(fun(n: Int) = n)
+4 return f(1) (in foo((Int) -> Int))
+8 val x = foo(fun(n: Int) = n) (in test())
+8 val x = foo(fun(n: Int) = n) (in test())
3 fun foo(f: (Int) -> Int): Int {
-4 return f(1)
-4 [LAMBDA IN] return f(1)
-3 [LAMBDA IN] fun foo(f: (Int) -> Int): Int {
-8 [LAMBDA IN] val x = foo(fun(n: Int) = n)
-8 val x = foo(fun(n: Int) = n)
-8 val x = foo(fun(n: Int) = n)
-8 val x = foo(fun(n: Int) = n)
-8 [LAMBDA CALLS ARGUMENT #0] val x = foo(fun(n: Int) = n)
-3 [LAMBDA CALLS ARGUMENT #0] fun foo(f: (Int) -> Int): Int {
-4 return f(1)
-
+4 return f(1) (in foo((Int) -> Int))
+4 [LAMBDA IN] return f(1) (in foo((Int) -> Int))
+3 [LAMBDA IN] fun foo(f: (Int) -> Int): Int { (in foo((Int) -> Int))
+8 [LAMBDA IN] val x = foo(fun(n: Int) = n) (in test())
+8 val x = foo(fun(n: Int) = n) (in test())
+8 val x = foo(fun(n: Int) = n) (in test())
+8 val x = foo(fun(n: Int) = n) (in test())
+8 [LAMBDA CALLS ARGUMENT #0] val x = foo(fun(n: Int) = n) (in test())
+3 [LAMBDA CALLS ARGUMENT #0] fun foo(f: (Int) -> Int): Int { (in foo((Int) -> Int))
+4 return f(1) (in foo((Int) -> Int))
diff --git a/idea/testData/slicer/inflow/anonymousFunBodyExpression.nullnessGroups.txt b/idea/testData/slicer/inflow/anonymousFunBodyExpression.nullnessGroups.txt
index 23c43517aa3a8..bc68214e977c8 100644
--- a/idea/testData/slicer/inflow/anonymousFunBodyExpression.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/anonymousFunBodyExpression.nullnessGroups.txt
@@ -1,3 +1,3 @@
[NotNull Values]
-8 val x = foo(fun(n: Int) = n)
-8 val x = foo(fun(n: Int) = n)
+8 val x = foo(fun(n: Int) = n) (in test())
+8 val x = foo(fun(n: Int) = n) (in test())
diff --git a/idea/testData/slicer/inflow/anonymousFunBodyExpression.results.txt b/idea/testData/slicer/inflow/anonymousFunBodyExpression.results.txt
index 1cb5b05c23d3d..c8a0f9ca061c1 100644
--- a/idea/testData/slicer/inflow/anonymousFunBodyExpression.results.txt
+++ b/idea/testData/slicer/inflow/anonymousFunBodyExpression.results.txt
@@ -1,13 +1,13 @@
-8 val x = foo(fun(n: Int) = n)
-8 val x = foo(fun(n: Int) = n)
+8 val x = foo(fun(n: Int) = n) (in test())
+8 val x = foo(fun(n: Int) = n) (in test())
3 fun foo(f: (Int) -> Int): Int {
-4 return f(1)
-4 [LAMBDA IN] return f(1)
-3 [LAMBDA IN] fun foo(f: (Int) -> Int): Int {
-8 [LAMBDA IN] val x = foo(fun(n: Int) = n)
-8 val x = foo(fun(n: Int) = n)
-8 val x = foo(fun(n: Int) = n)
-8 val x = foo(fun(n: Int) = n)
-8 [LAMBDA CALLS ARGUMENT #0] val x = foo(fun(n: Int) = n)
-3 [LAMBDA CALLS ARGUMENT #0] fun foo(f: (Int) -> Int): Int {
-4 return f(1)
+4 return f(1) (in foo((Int) -> Int))
+4 [LAMBDA IN] return f(1) (in foo((Int) -> Int))
+3 [LAMBDA IN] fun foo(f: (Int) -> Int): Int { (in foo((Int) -> Int))
+8 [LAMBDA IN] val x = foo(fun(n: Int) = n) (in test())
+8 val x = foo(fun(n: Int) = n) (in test())
+8 val x = foo(fun(n: Int) = n) (in test())
+8 val x = foo(fun(n: Int) = n) (in test())
+8 [LAMBDA CALLS ARGUMENT #0] val x = foo(fun(n: Int) = n) (in test())
+3 [LAMBDA CALLS ARGUMENT #0] fun foo(f: (Int) -> Int): Int { (in foo((Int) -> Int))
+4 return f(1) (in foo((Int) -> Int))
diff --git a/idea/testData/slicer/inflow/anonymousFunReturnExpression.leafGroups.txt b/idea/testData/slicer/inflow/anonymousFunReturnExpression.leafGroups.txt
index 48be750ee4d4c..f5f3f5ba7da96 100644
--- a/idea/testData/slicer/inflow/anonymousFunReturnExpression.leafGroups.txt
+++ b/idea/testData/slicer/inflow/anonymousFunReturnExpression.leafGroups.txt
@@ -1,15 +1,14 @@
-4 return f(1)
-8 val x = foo(fun(n: Int): Int { return n })
-8 val x = foo(fun(n: Int): Int { return n })
+4 return f(1) (in foo((Int) -> Int))
+8 val x = foo(fun(n: Int): Int { return n }) (in test())
+8 val x = foo(fun(n: Int): Int { return n }) (in test())
3 fun foo(f: (Int) -> Int): Int {
-4 return f(1)
-4 [LAMBDA IN] return f(1)
-3 [LAMBDA IN] fun foo(f: (Int) -> Int): Int {
-8 [LAMBDA IN] val x = foo(fun(n: Int): Int { return n })
-8 val x = foo(fun(n: Int): Int { return n })
-8 val x = foo(fun(n: Int): Int { return n })
-8 val x = foo(fun(n: Int): Int { return n })
-8 [LAMBDA CALLS ARGUMENT #0] val x = foo(fun(n: Int): Int { return n })
-3 [LAMBDA CALLS ARGUMENT #0] fun foo(f: (Int) -> Int): Int {
-4 return f(1)
-
+4 return f(1) (in foo((Int) -> Int))
+4 [LAMBDA IN] return f(1) (in foo((Int) -> Int))
+3 [LAMBDA IN] fun foo(f: (Int) -> Int): Int { (in foo((Int) -> Int))
+8 [LAMBDA IN] val x = foo(fun(n: Int): Int { return n }) (in test())
+8 val x = foo(fun(n: Int): Int { return n }) (in test())
+8 val x = foo(fun(n: Int): Int { return n }) (in test())
+8 val x = foo(fun(n: Int): Int { return n }) (in test())
+8 [LAMBDA CALLS ARGUMENT #0] val x = foo(fun(n: Int): Int { return n }) (in test())
+3 [LAMBDA CALLS ARGUMENT #0] fun foo(f: (Int) -> Int): Int { (in foo((Int) -> Int))
+4 return f(1) (in foo((Int) -> Int))
diff --git a/idea/testData/slicer/inflow/anonymousFunReturnExpression.nullnessGroups.txt b/idea/testData/slicer/inflow/anonymousFunReturnExpression.nullnessGroups.txt
index 1638e6e88e798..3b3573bf4c1b1 100644
--- a/idea/testData/slicer/inflow/anonymousFunReturnExpression.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/anonymousFunReturnExpression.nullnessGroups.txt
@@ -1,3 +1,3 @@
[NotNull Values]
-8 val x = foo(fun(n: Int): Int { return n })
-8 val x = foo(fun(n: Int): Int { return n })
+8 val x = foo(fun(n: Int): Int { return n }) (in test())
+8 val x = foo(fun(n: Int): Int { return n }) (in test())
diff --git a/idea/testData/slicer/inflow/anonymousFunReturnExpression.results.txt b/idea/testData/slicer/inflow/anonymousFunReturnExpression.results.txt
index 7be6b76e83504..6b3111149e792 100644
--- a/idea/testData/slicer/inflow/anonymousFunReturnExpression.results.txt
+++ b/idea/testData/slicer/inflow/anonymousFunReturnExpression.results.txt
@@ -1,13 +1,13 @@
-8 val x = foo(fun(n: Int): Int { return n })
-8 val x = foo(fun(n: Int): Int { return n })
+8 val x = foo(fun(n: Int): Int { return n }) (in test())
+8 val x = foo(fun(n: Int): Int { return n }) (in test())
3 fun foo(f: (Int) -> Int): Int {
-4 return f(1)
-4 [LAMBDA IN] return f(1)
-3 [LAMBDA IN] fun foo(f: (Int) -> Int): Int {
-8 [LAMBDA IN] val x = foo(fun(n: Int): Int { return n })
-8 val x = foo(fun(n: Int): Int { return n })
-8 val x = foo(fun(n: Int): Int { return n })
-8 val x = foo(fun(n: Int): Int { return n })
-8 [LAMBDA CALLS ARGUMENT #0] val x = foo(fun(n: Int): Int { return n })
-3 [LAMBDA CALLS ARGUMENT #0] fun foo(f: (Int) -> Int): Int {
-4 return f(1)
+4 return f(1) (in foo((Int) -> Int))
+4 [LAMBDA IN] return f(1) (in foo((Int) -> Int))
+3 [LAMBDA IN] fun foo(f: (Int) -> Int): Int { (in foo((Int) -> Int))
+8 [LAMBDA IN] val x = foo(fun(n: Int): Int { return n }) (in test())
+8 val x = foo(fun(n: Int): Int { return n }) (in test())
+8 val x = foo(fun(n: Int): Int { return n }) (in test())
+8 val x = foo(fun(n: Int): Int { return n }) (in test())
+8 [LAMBDA CALLS ARGUMENT #0] val x = foo(fun(n: Int): Int { return n }) (in test())
+3 [LAMBDA CALLS ARGUMENT #0] fun foo(f: (Int) -> Int): Int { (in foo((Int) -> Int))
+4 return f(1) (in foo((Int) -> Int))
diff --git a/idea/testData/slicer/inflow/anonymousFunctionParameter.leafGroups.txt b/idea/testData/slicer/inflow/anonymousFunctionParameter.leafGroups.txt
index 203793c7ba3c4..56ceb5b07e09a 100644
--- a/idea/testData/slicer/inflow/anonymousFunctionParameter.leafGroups.txt
+++ b/idea/testData/slicer/inflow/anonymousFunctionParameter.leafGroups.txt
@@ -1,8 +1,7 @@
-4 f(1)
-9 val v = value
-9 val v = value
-8 foo(fun(value: Int) {
-8 [LAMBDA CALLS ARGUMENT #0] foo(fun(value: Int) {
-3 [LAMBDA CALLS ARGUMENT #0] fun foo(f: (Int) -> Unit) {
-4 f(1)
-
+4 f(1) (in foo((Int) -> Unit))
+9 val v = value (in test())
+9 val v = value (in test())
+8 foo(fun(value: Int) { (in test())
+8 [LAMBDA CALLS ARGUMENT #0] foo(fun(value: Int) { (in test())
+3 [LAMBDA CALLS ARGUMENT #0] fun foo(f: (Int) -> Unit) { (in foo((Int) -> Unit))
+4 f(1) (in foo((Int) -> Unit))
diff --git a/idea/testData/slicer/inflow/anonymousFunctionParameter.nullnessGroups.txt b/idea/testData/slicer/inflow/anonymousFunctionParameter.nullnessGroups.txt
index 7ddd357b89786..c5eeb8a9d4dc9 100644
--- a/idea/testData/slicer/inflow/anonymousFunctionParameter.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/anonymousFunctionParameter.nullnessGroups.txt
@@ -1,3 +1,3 @@
[NotNull Values]
-9 val v = value
-9 val v = value
+9 val v = value (in test())
+9 val v = value (in test())
diff --git a/idea/testData/slicer/inflow/anonymousFunctionParameter.results.txt b/idea/testData/slicer/inflow/anonymousFunctionParameter.results.txt
index b0719353375bb..6df1965fc7428 100644
--- a/idea/testData/slicer/inflow/anonymousFunctionParameter.results.txt
+++ b/idea/testData/slicer/inflow/anonymousFunctionParameter.results.txt
@@ -1,6 +1,6 @@
-9 val v = value
-9 val v = value
-8 foo(fun(value: Int) {
-8 [LAMBDA CALLS ARGUMENT #0] foo(fun(value: Int) {
-3 [LAMBDA CALLS ARGUMENT #0] fun foo(f: (Int) -> Unit) {
-4 f(1)
+9 val v = value (in test())
+9 val v = value (in test())
+8 foo(fun(value: Int) { (in test())
+8 [LAMBDA CALLS ARGUMENT #0] foo(fun(value: Int) { (in test())
+3 [LAMBDA CALLS ARGUMENT #0] fun foo(f: (Int) -> Unit) { (in foo((Int) -> Unit))
+4 f(1) (in foo((Int) -> Unit))
diff --git a/idea/testData/slicer/inflow/cast.leafGroups.txt b/idea/testData/slicer/inflow/cast.leafGroups.txt
index f1bfddc1dd3a7..67e710bd4f120 100644
--- a/idea/testData/slicer/inflow/cast.leafGroups.txt
+++ b/idea/testData/slicer/inflow/cast.leafGroups.txt
@@ -1,6 +1,5 @@
-3 fun test(o: Any) {
-4 val x = o as String
-4 val x = o as String
-4 val x = o as String
-3 fun test(o: Any) {
-
+3 fun test(o: Any) { (in test(Any))
+4 val x = o as String (in test(Any))
+4 val x = o as String (in test(Any))
+4 val x = o as String (in test(Any))
+3 fun test(o: Any) { (in test(Any))
diff --git a/idea/testData/slicer/inflow/cast.nullnessGroups.txt b/idea/testData/slicer/inflow/cast.nullnessGroups.txt
index 36d8ed957490b..e568ea0ea9de0 100644
--- a/idea/testData/slicer/inflow/cast.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/cast.nullnessGroups.txt
@@ -1,4 +1,3 @@
[NotNull Values]
-4 val x = o as String
-4 val x = o as String
-
+4 val x = o as String (in test(Any))
+4 val x = o as String (in test(Any))
diff --git a/idea/testData/slicer/inflow/cast.results.txt b/idea/testData/slicer/inflow/cast.results.txt
index 4ce165fe7e3e9..661fb04c4d715 100644
--- a/idea/testData/slicer/inflow/cast.results.txt
+++ b/idea/testData/slicer/inflow/cast.results.txt
@@ -1,4 +1,4 @@
-4 val x = o as String
-4 val x = o as String
-4 val x = o as String
-3 fun test(o: Any) {
+4 val x = o as String (in test(Any))
+4 val x = o as String (in test(Any))
+4 val x = o as String (in test(Any))
+3 fun test(o: Any) { (in test(Any))
diff --git a/idea/testData/slicer/inflow/compositeAssignments.leafGroups.txt b/idea/testData/slicer/inflow/compositeAssignments.leafGroups.txt
index 77a94ae1b4f15..ebff30d446896 100644
--- a/idea/testData/slicer/inflow/compositeAssignments.leafGroups.txt
+++ b/idea/testData/slicer/inflow/compositeAssignments.leafGroups.txt
@@ -1,17 +1,17 @@
-7 --result
+7 --result (in assignmentWithSum(Int))
3 fun assignmentWithSum(n: Int): Int {
-8 return result
-4 var result = 0
-7 --result
+8 return result (in assignmentWithSum(Int))
+4 var result = 0 (in assignmentWithSum(Int))
+7 --result (in assignmentWithSum(Int))
-4 var result = 0
+4 var result = 0 (in assignmentWithSum(Int))
3 fun assignmentWithSum(n: Int): Int {
-8 return result
-4 var result = 0
-4 var result = 0
+8 return result (in assignmentWithSum(Int))
+4 var result = 0 (in assignmentWithSum(Int))
+4 var result = 0 (in assignmentWithSum(Int))
-5 result += n
+5 result += n (in assignmentWithSum(Int))
3 fun assignmentWithSum(n: Int): Int {
-8 return result
-4 var result = 0
-5 result += n
+8 return result (in assignmentWithSum(Int))
+4 var result = 0 (in assignmentWithSum(Int))
+5 result += n (in assignmentWithSum(Int))
diff --git a/idea/testData/slicer/inflow/compositeAssignments.results.txt b/idea/testData/slicer/inflow/compositeAssignments.results.txt
index 3869cb9728b39..b3bd23d6a735e 100644
--- a/idea/testData/slicer/inflow/compositeAssignments.results.txt
+++ b/idea/testData/slicer/inflow/compositeAssignments.results.txt
@@ -1,8 +1,8 @@
3 fun assignmentWithSum(n: Int): Int {
-8 return result
-4 var result = 0
-4 var result = 0
-5 result += n
-6 result++
-4 DUPLICATE: var result = 0
-7 --result
+8 return result (in assignmentWithSum(Int))
+4 var result = 0 (in assignmentWithSum(Int))
+4 var result = 0 (in assignmentWithSum(Int))
+5 result += n (in assignmentWithSum(Int))
+6 result++ (in assignmentWithSum(Int))
+4 DUPLICATE: var result = 0 (in assignmentWithSum(Int))
+7 --result (in assignmentWithSum(Int))
diff --git a/idea/testData/slicer/inflow/defaultGetterFieldInSetter.leafGroups.txt b/idea/testData/slicer/inflow/defaultGetterFieldInSetter.leafGroups.txt
index 02c1e9edfed05..ee52c2aceb959 100644
--- a/idea/testData/slicer/inflow/defaultGetterFieldInSetter.leafGroups.txt
+++ b/idea/testData/slicer/inflow/defaultGetterFieldInSetter.leafGroups.txt
@@ -1,13 +1,12 @@
-4 var foo: Int = 0
-10 val x = foo
-4 var foo: Int = 0
-4 var foo: Int = 0
-
-11 foo = 1
-10 val x = foo
-4 var foo: Int = 0
-6 field = if (b) value else 0
-6 field = if (b) value else 0
-5 set(value) {
-11 foo = 1
+4 var foo: Int = 0 (in A.foo: Int)
+10 val x = foo (in A.test())
+4 var foo: Int = 0 (in A)
+4 var foo: Int = 0 (in A.foo: Int)
+11 foo = 1 (in A.test())
+10 val x = foo (in A.test())
+4 var foo: Int = 0 (in A)
+6 field = if (b) value else 0 (in A.foo: Int)
+6 field = if (b) value else 0 (in A.foo: Int)
+5 set(value) { (in A.foo: Int)
+11 foo = 1 (in A.test())
diff --git a/idea/testData/slicer/inflow/defaultGetterFieldInSetter.nullnessGroups.txt b/idea/testData/slicer/inflow/defaultGetterFieldInSetter.nullnessGroups.txt
index 194af3317cbad..a74699a019070 100644
--- a/idea/testData/slicer/inflow/defaultGetterFieldInSetter.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/defaultGetterFieldInSetter.nullnessGroups.txt
@@ -1,3 +1,3 @@
[NotNull Values]
-10 val x = foo
-10 val x = foo
+10 val x = foo (in A.test())
+10 val x = foo (in A.test())
diff --git a/idea/testData/slicer/inflow/defaultGetterFieldInSetter.results.txt b/idea/testData/slicer/inflow/defaultGetterFieldInSetter.results.txt
index 2f668737f6ee1..31fbab97d614e 100644
--- a/idea/testData/slicer/inflow/defaultGetterFieldInSetter.results.txt
+++ b/idea/testData/slicer/inflow/defaultGetterFieldInSetter.results.txt
@@ -1,8 +1,8 @@
-10 val x = foo
-4 var foo: Int = 0
-4 var foo: Int = 0
-6 field = if (b) value else 0
-6 field = if (b) value else 0
-5 set(value) {
-11 foo = 1
-6 field = if (b) value else 0
+10 val x = foo (in A.test())
+4 var foo: Int = 0 (in A)
+4 var foo: Int = 0 (in A.foo: Int)
+6 field = if (b) value else 0 (in A.foo: Int)
+6 field = if (b) value else 0 (in A.foo: Int)
+5 set(value) { (in A.foo: Int)
+11 foo = 1 (in A.test())
+6 field = if (b) value else 0 (in A.foo: Int)
diff --git a/idea/testData/slicer/inflow/delegateGetter.leafGroups.txt b/idea/testData/slicer/inflow/delegateGetter.leafGroups.txt
index 2e65fe128253b..3d29dd4cd9800 100644
--- a/idea/testData/slicer/inflow/delegateGetter.leafGroups.txt
+++ b/idea/testData/slicer/inflow/delegateGetter.leafGroups.txt
@@ -1,7 +1,6 @@
-6 operator fun getValue(thisRef: Any?, property: KProperty<*>) = 1
-12 val x = foo
-12 val x = foo
+6 operator fun getValue(thisRef: Any?, property: KProperty<*>) = 1 (in D.getValue(Any?, KProperty<*>))
+12 val x = foo (in test())
+12 val x = foo (in test())
9 val foo: Int by D
-6 operator fun getValue(thisRef: Any?, property: KProperty<*>) = 1
-6 operator fun getValue(thisRef: Any?, property: KProperty<*>) = 1
-
+6 operator fun getValue(thisRef: Any?, property: KProperty<*>) = 1 (in D)
+6 operator fun getValue(thisRef: Any?, property: KProperty<*>) = 1 (in D.getValue(Any?, KProperty<*>))
diff --git a/idea/testData/slicer/inflow/delegateGetter.nullnessGroups.txt b/idea/testData/slicer/inflow/delegateGetter.nullnessGroups.txt
index d2294fea665fa..9804e41f1d198 100644
--- a/idea/testData/slicer/inflow/delegateGetter.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/delegateGetter.nullnessGroups.txt
@@ -1,3 +1,3 @@
[NotNull Values]
-12 val x = foo
-12 val x = foo
+12 val x = foo (in test())
+12 val x = foo (in test())
diff --git a/idea/testData/slicer/inflow/delegateGetter.results.txt b/idea/testData/slicer/inflow/delegateGetter.results.txt
index 02eee37203983..d88ed751a15c7 100644
--- a/idea/testData/slicer/inflow/delegateGetter.results.txt
+++ b/idea/testData/slicer/inflow/delegateGetter.results.txt
@@ -1,5 +1,5 @@
-12 val x = foo
-12 val x = foo
+12 val x = foo (in test())
+12 val x = foo (in test())
9 val foo: Int by D
-6 operator fun getValue(thisRef: Any?, property: KProperty<*>) = 1
-6 operator fun getValue(thisRef: Any?, property: KProperty<*>) = 1
+6 operator fun getValue(thisRef: Any?, property: KProperty<*>) = 1 (in D)
+6 operator fun getValue(thisRef: Any?, property: KProperty<*>) = 1 (in D.getValue(Any?, KProperty<*>))
diff --git a/idea/testData/slicer/inflow/delegateToJavaGetter.leafGroups.txt b/idea/testData/slicer/inflow/delegateToJavaGetter.leafGroups.txt
index 090d4fe03727d..0e6ac9a728c6c 100644
--- a/idea/testData/slicer/inflow/delegateToJavaGetter.leafGroups.txt
+++ b/idea/testData/slicer/inflow/delegateToJavaGetter.leafGroups.txt
@@ -1,5 +1,5 @@
9 return 1;
-7 val x = foo
-7 val x = foo
+7 val x = foo (in test())
+7 val x = foo (in test())
4 val foo: Int by D.INSTANCE
9 return 1;
diff --git a/idea/testData/slicer/inflow/delegateToJavaGetter.nullnessGroups.txt b/idea/testData/slicer/inflow/delegateToJavaGetter.nullnessGroups.txt
index 142739bce1141..b14ba93c49a69 100644
--- a/idea/testData/slicer/inflow/delegateToJavaGetter.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/delegateToJavaGetter.nullnessGroups.txt
@@ -1,3 +1,3 @@
[NotNull Values]
-7 val x = foo
-7 val x = foo
+7 val x = foo (in test())
+7 val x = foo (in test())
diff --git a/idea/testData/slicer/inflow/delegateToJavaGetter.results.txt b/idea/testData/slicer/inflow/delegateToJavaGetter.results.txt
index 1c258e4a6bb3e..5cb35a79afc8e 100644
--- a/idea/testData/slicer/inflow/delegateToJavaGetter.results.txt
+++ b/idea/testData/slicer/inflow/delegateToJavaGetter.results.txt
@@ -1,4 +1,4 @@
-7 val x = foo
-7 val x = foo
+7 val x = foo (in test())
+7 val x = foo (in test())
4 val foo: Int by D.INSTANCE
9 return 1;
diff --git a/idea/testData/slicer/inflow/diamondHierarchyJKMiddleClassFun.leafGroups.txt b/idea/testData/slicer/inflow/diamondHierarchyJKMiddleClassFun.leafGroups.txt
index 407cb45efc6df..aa6a42f16782f 100644
--- a/idea/testData/slicer/inflow/diamondHierarchyJKMiddleClassFun.leafGroups.txt
+++ b/idea/testData/slicer/inflow/diamondHierarchyJKMiddleClassFun.leafGroups.txt
@@ -1,11 +1,10 @@
-4 override fun foo() = 2
-9 val y = b.foo()
-9 val y = b.foo()
-4 override fun foo() = 2
-4 override fun foo() = 2
+4 override fun foo() = 2 (in B.foo())
+9 val y = b.foo() (in test(A, B, C, D))
+9 val y = b.foo() (in test(A, B, C, D))
+4 override fun foo() = 2 (in B)
+4 override fun foo() = 2 (in B.foo())
11 return 4;
-9 val y = b.foo()
-9 val y = b.foo()
+9 val y = b.foo() (in test(A, B, C, D))
+9 val y = b.foo() (in test(A, B, C, D))
11 return 4;
-
diff --git a/idea/testData/slicer/inflow/diamondHierarchyJKMiddleClassFun.nullnessGroups.txt b/idea/testData/slicer/inflow/diamondHierarchyJKMiddleClassFun.nullnessGroups.txt
index b71769875eda9..8de1578f4b7a5 100644
--- a/idea/testData/slicer/inflow/diamondHierarchyJKMiddleClassFun.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/diamondHierarchyJKMiddleClassFun.nullnessGroups.txt
@@ -1,3 +1,3 @@
[NotNull Values]
-9 val y = b.foo()
-9 val y = b.foo()
+9 val y = b.foo() (in test(A, B, C, D))
+9 val y = b.foo() (in test(A, B, C, D))
diff --git a/idea/testData/slicer/inflow/diamondHierarchyJKMiddleClassFun.results.txt b/idea/testData/slicer/inflow/diamondHierarchyJKMiddleClassFun.results.txt
index d1cde35dbd5c5..dc76795cbe82e 100644
--- a/idea/testData/slicer/inflow/diamondHierarchyJKMiddleClassFun.results.txt
+++ b/idea/testData/slicer/inflow/diamondHierarchyJKMiddleClassFun.results.txt
@@ -1,5 +1,5 @@
-9 val y = b.foo()
-9 val y = b.foo()
-4 override fun foo() = 2
-4 override fun foo() = 2
+9 val y = b.foo() (in test(A, B, C, D))
+9 val y = b.foo() (in test(A, B, C, D))
+4 override fun foo() = 2 (in B)
+4 override fun foo() = 2 (in B.foo())
11 return 4;
diff --git a/idea/testData/slicer/inflow/diamondHierarchyJKMiddleInterfaceFun.leafGroups.txt b/idea/testData/slicer/inflow/diamondHierarchyJKMiddleInterfaceFun.leafGroups.txt
index 9aba49aa7aca8..9cff8485bbc43 100644
--- a/idea/testData/slicer/inflow/diamondHierarchyJKMiddleInterfaceFun.leafGroups.txt
+++ b/idea/testData/slicer/inflow/diamondHierarchyJKMiddleInterfaceFun.leafGroups.txt
@@ -1,10 +1,10 @@
-4 override fun foo() = 3
-10 val z = c.foo()
-10 val z = c.foo()
-4 override fun foo() = 3
-4 override fun foo() = 3
+4 override fun foo() = 3 (in C.foo())
+10 val z = c.foo() (in test(A, B, C, D))
+10 val z = c.foo() (in test(A, B, C, D))
+4 override fun foo() = 3 (in C)
+4 override fun foo() = 3 (in C.foo())
13 return 4;
-10 val z = c.foo()
-10 val z = c.foo()
+10 val z = c.foo() (in test(A, B, C, D))
+10 val z = c.foo() (in test(A, B, C, D))
13 return 4;
diff --git a/idea/testData/slicer/inflow/diamondHierarchyJKMiddleInterfaceFun.nullnessGroups.txt b/idea/testData/slicer/inflow/diamondHierarchyJKMiddleInterfaceFun.nullnessGroups.txt
index 29011be65df3c..a24b4c114d971 100644
--- a/idea/testData/slicer/inflow/diamondHierarchyJKMiddleInterfaceFun.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/diamondHierarchyJKMiddleInterfaceFun.nullnessGroups.txt
@@ -1,3 +1,3 @@
[NotNull Values]
-10 val z = c.foo()
-10 val z = c.foo()
+10 val z = c.foo() (in test(A, B, C, D))
+10 val z = c.foo() (in test(A, B, C, D))
diff --git a/idea/testData/slicer/inflow/diamondHierarchyJKMiddleInterfaceFun.results.txt b/idea/testData/slicer/inflow/diamondHierarchyJKMiddleInterfaceFun.results.txt
index 50a5bf26c4ed3..7fa8f07ed0651 100644
--- a/idea/testData/slicer/inflow/diamondHierarchyJKMiddleInterfaceFun.results.txt
+++ b/idea/testData/slicer/inflow/diamondHierarchyJKMiddleInterfaceFun.results.txt
@@ -1,5 +1,5 @@
-10 val z = c.foo()
-10 val z = c.foo()
-4 override fun foo() = 3
-4 override fun foo() = 3
+10 val z = c.foo() (in test(A, B, C, D))
+10 val z = c.foo() (in test(A, B, C, D))
+4 override fun foo() = 3 (in C)
+4 override fun foo() = 3 (in C.foo())
13 return 4;
diff --git a/idea/testData/slicer/inflow/diamondHierarchyJKRootInterfaceFun.leafGroups.txt b/idea/testData/slicer/inflow/diamondHierarchyJKRootInterfaceFun.leafGroups.txt
index 5ae3c41bcaf46..1b3f6d3216801 100644
--- a/idea/testData/slicer/inflow/diamondHierarchyJKRootInterfaceFun.leafGroups.txt
+++ b/idea/testData/slicer/inflow/diamondHierarchyJKRootInterfaceFun.leafGroups.txt
@@ -1,15 +1,15 @@
-4 fun foo() = 1
-8 val x = a.foo()
-8 val x = a.foo()
-4 fun foo() = 1
-4 fun foo() = 1
+4 fun foo() = 1 (in A.foo())
+8 val x = a.foo() (in test(A, B, C, D))
+8 val x = a.foo() (in test(A, B, C, D))
+4 fun foo() = 1 (in A)
+4 fun foo() = 1 (in A.foo())
3 return 2;
-8 val x = a.foo()
-8 val x = a.foo()
+8 val x = a.foo() (in test(A, B, C, D))
+8 val x = a.foo() (in test(A, B, C, D))
3 return 2;
13 return 4;
-8 val x = a.foo()
-8 val x = a.foo()
+8 val x = a.foo() (in test(A, B, C, D))
+8 val x = a.foo() (in test(A, B, C, D))
13 return 4;
diff --git a/idea/testData/slicer/inflow/diamondHierarchyJKRootInterfaceFun.nullnessGroups.txt b/idea/testData/slicer/inflow/diamondHierarchyJKRootInterfaceFun.nullnessGroups.txt
index 91e24f724b5d9..70cb91d4bc335 100644
--- a/idea/testData/slicer/inflow/diamondHierarchyJKRootInterfaceFun.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/diamondHierarchyJKRootInterfaceFun.nullnessGroups.txt
@@ -1,3 +1,3 @@
[NotNull Values]
-8 val x = a.foo()
-8 val x = a.foo()
+8 val x = a.foo() (in test(A, B, C, D))
+8 val x = a.foo() (in test(A, B, C, D))
diff --git a/idea/testData/slicer/inflow/diamondHierarchyJKRootInterfaceFun.results.txt b/idea/testData/slicer/inflow/diamondHierarchyJKRootInterfaceFun.results.txt
index f485b80aa2265..b8b6db6b39aba 100644
--- a/idea/testData/slicer/inflow/diamondHierarchyJKRootInterfaceFun.results.txt
+++ b/idea/testData/slicer/inflow/diamondHierarchyJKRootInterfaceFun.results.txt
@@ -1,6 +1,6 @@
-8 val x = a.foo()
-8 val x = a.foo()
-4 fun foo() = 1
-4 fun foo() = 1
+8 val x = a.foo() (in test(A, B, C, D))
+8 val x = a.foo() (in test(A, B, C, D))
+4 fun foo() = 1 (in A)
+4 fun foo() = 1 (in A.foo())
3 return 2;
13 return 4;
diff --git a/idea/testData/slicer/inflow/diamondHierarchyMiddleClassFun.leafGroups.txt b/idea/testData/slicer/inflow/diamondHierarchyMiddleClassFun.leafGroups.txt
index e5207d6658557..c02a6cad00af3 100644
--- a/idea/testData/slicer/inflow/diamondHierarchyMiddleClassFun.leafGroups.txt
+++ b/idea/testData/slicer/inflow/diamondHierarchyMiddleClassFun.leafGroups.txt
@@ -1,12 +1,11 @@
-8 override fun foo() = 2
-21 val y = b.foo()
-21 val y = b.foo()
-8 override fun foo() = 2
-8 override fun foo() = 2
-
-16 override fun foo() = 4
-21 val y = b.foo()
-21 val y = b.foo()
-16 override fun foo() = 4
-16 override fun foo() = 4
+8 override fun foo() = 2 (in B.foo())
+21 val y = b.foo() (in test(A, B, C, D))
+21 val y = b.foo() (in test(A, B, C, D))
+8 override fun foo() = 2 (in B)
+8 override fun foo() = 2 (in B.foo())
+16 override fun foo() = 4 (in D.foo())
+21 val y = b.foo() (in test(A, B, C, D))
+21 val y = b.foo() (in test(A, B, C, D))
+16 override fun foo() = 4 (in D)
+16 override fun foo() = 4 (in D.foo())
diff --git a/idea/testData/slicer/inflow/diamondHierarchyMiddleClassFun.nullnessGroups.txt b/idea/testData/slicer/inflow/diamondHierarchyMiddleClassFun.nullnessGroups.txt
index edaa10b75b91c..6ce47a0f20039 100644
--- a/idea/testData/slicer/inflow/diamondHierarchyMiddleClassFun.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/diamondHierarchyMiddleClassFun.nullnessGroups.txt
@@ -1,3 +1,3 @@
[NotNull Values]
-21 val y = b.foo()
-21 val y = b.foo()
+21 val y = b.foo() (in test(A, B, C, D))
+21 val y = b.foo() (in test(A, B, C, D))
diff --git a/idea/testData/slicer/inflow/diamondHierarchyMiddleClassFun.results.txt b/idea/testData/slicer/inflow/diamondHierarchyMiddleClassFun.results.txt
index 9b70369d62f92..0343f6ce8db8b 100644
--- a/idea/testData/slicer/inflow/diamondHierarchyMiddleClassFun.results.txt
+++ b/idea/testData/slicer/inflow/diamondHierarchyMiddleClassFun.results.txt
@@ -1,6 +1,6 @@
-21 val y = b.foo()
-21 val y = b.foo()
-8 override fun foo() = 2
-8 override fun foo() = 2
-16 override fun foo() = 4
-16 override fun foo() = 4
+21 val y = b.foo() (in test(A, B, C, D))
+21 val y = b.foo() (in test(A, B, C, D))
+8 override fun foo() = 2 (in B)
+8 override fun foo() = 2 (in B.foo())
+16 override fun foo() = 4 (in D)
+16 override fun foo() = 4 (in D.foo())
diff --git a/idea/testData/slicer/inflow/diamondHierarchyMiddleInterfaceFun.leafGroups.txt b/idea/testData/slicer/inflow/diamondHierarchyMiddleInterfaceFun.leafGroups.txt
index 30f9f5bdaabab..f6e10d4eac237 100644
--- a/idea/testData/slicer/inflow/diamondHierarchyMiddleInterfaceFun.leafGroups.txt
+++ b/idea/testData/slicer/inflow/diamondHierarchyMiddleInterfaceFun.leafGroups.txt
@@ -1,12 +1,11 @@
-12 override fun foo() = 3
-22 val z = c.foo()
-22 val z = c.foo()
-12 override fun foo() = 3
-12 override fun foo() = 3
-
-16 override fun foo() = 4
-22 val z = c.foo()
-22 val z = c.foo()
-16 override fun foo() = 4
-16 override fun foo() = 4
+12 override fun foo() = 3 (in C.foo())
+22 val z = c.foo() (in test(A, B, C, D))
+22 val z = c.foo() (in test(A, B, C, D))
+12 override fun foo() = 3 (in C)
+12 override fun foo() = 3 (in C.foo())
+16 override fun foo() = 4 (in D.foo())
+22 val z = c.foo() (in test(A, B, C, D))
+22 val z = c.foo() (in test(A, B, C, D))
+16 override fun foo() = 4 (in D)
+16 override fun foo() = 4 (in D.foo())
diff --git a/idea/testData/slicer/inflow/diamondHierarchyMiddleInterfaceFun.nullnessGroups.txt b/idea/testData/slicer/inflow/diamondHierarchyMiddleInterfaceFun.nullnessGroups.txt
index 80a6e55409099..38365deb18c06 100644
--- a/idea/testData/slicer/inflow/diamondHierarchyMiddleInterfaceFun.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/diamondHierarchyMiddleInterfaceFun.nullnessGroups.txt
@@ -1,3 +1,3 @@
[NotNull Values]
-22 val z = c.foo()
-22 val z = c.foo()
+22 val z = c.foo() (in test(A, B, C, D))
+22 val z = c.foo() (in test(A, B, C, D))
diff --git a/idea/testData/slicer/inflow/diamondHierarchyMiddleInterfaceFun.results.txt b/idea/testData/slicer/inflow/diamondHierarchyMiddleInterfaceFun.results.txt
index 74d9098a95dcc..72de534535129 100644
--- a/idea/testData/slicer/inflow/diamondHierarchyMiddleInterfaceFun.results.txt
+++ b/idea/testData/slicer/inflow/diamondHierarchyMiddleInterfaceFun.results.txt
@@ -1,6 +1,6 @@
-22 val z = c.foo()
-22 val z = c.foo()
-12 override fun foo() = 3
-12 override fun foo() = 3
-16 override fun foo() = 4
-16 override fun foo() = 4
+22 val z = c.foo() (in test(A, B, C, D))
+22 val z = c.foo() (in test(A, B, C, D))
+12 override fun foo() = 3 (in C)
+12 override fun foo() = 3 (in C.foo())
+16 override fun foo() = 4 (in D)
+16 override fun foo() = 4 (in D.foo())
diff --git a/idea/testData/slicer/inflow/diamondHierarchyRootInterfaceFun.leafGroups.txt b/idea/testData/slicer/inflow/diamondHierarchyRootInterfaceFun.leafGroups.txt
index 34a3dd15af3cb..81b76d04421fc 100644
--- a/idea/testData/slicer/inflow/diamondHierarchyRootInterfaceFun.leafGroups.txt
+++ b/idea/testData/slicer/inflow/diamondHierarchyRootInterfaceFun.leafGroups.txt
@@ -1,24 +1,23 @@
-4 fun foo() = 1
-20 val x = a.foo()
-20 val x = a.foo()
-4 fun foo() = 1
-4 fun foo() = 1
+4 fun foo() = 1 (in A.foo())
+20 val x = a.foo() (in test(A, B, C, D))
+20 val x = a.foo() (in test(A, B, C, D))
+4 fun foo() = 1 (in A)
+4 fun foo() = 1 (in A.foo())
-8 override fun foo() = 2
-20 val x = a.foo()
-20 val x = a.foo()
-8 override fun foo() = 2
-8 override fun foo() = 2
+8 override fun foo() = 2 (in B.foo())
+20 val x = a.foo() (in test(A, B, C, D))
+20 val x = a.foo() (in test(A, B, C, D))
+8 override fun foo() = 2 (in B)
+8 override fun foo() = 2 (in B.foo())
-12 override fun foo() = 3
-20 val x = a.foo()
-20 val x = a.foo()
-12 override fun foo() = 3
-12 override fun foo() = 3
-
-16 override fun foo() = 4
-20 val x = a.foo()
-20 val x = a.foo()
-16 override fun foo() = 4
-16 override fun foo() = 4
+12 override fun foo() = 3 (in C.foo())
+20 val x = a.foo() (in test(A, B, C, D))
+20 val x = a.foo() (in test(A, B, C, D))
+12 override fun foo() = 3 (in C)
+12 override fun foo() = 3 (in C.foo())
+16 override fun foo() = 4 (in D.foo())
+20 val x = a.foo() (in test(A, B, C, D))
+20 val x = a.foo() (in test(A, B, C, D))
+16 override fun foo() = 4 (in D)
+16 override fun foo() = 4 (in D.foo())
diff --git a/idea/testData/slicer/inflow/diamondHierarchyRootInterfaceFun.nullnessGroups.txt b/idea/testData/slicer/inflow/diamondHierarchyRootInterfaceFun.nullnessGroups.txt
index 3d1897a89b215..94a1813a1e6b0 100644
--- a/idea/testData/slicer/inflow/diamondHierarchyRootInterfaceFun.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/diamondHierarchyRootInterfaceFun.nullnessGroups.txt
@@ -1,3 +1,3 @@
[NotNull Values]
-20 val x = a.foo()
-20 val x = a.foo()
+20 val x = a.foo() (in test(A, B, C, D))
+20 val x = a.foo() (in test(A, B, C, D))
diff --git a/idea/testData/slicer/inflow/diamondHierarchyRootInterfaceFun.results.txt b/idea/testData/slicer/inflow/diamondHierarchyRootInterfaceFun.results.txt
index 6611cb67f938d..3658e2afedd01 100644
--- a/idea/testData/slicer/inflow/diamondHierarchyRootInterfaceFun.results.txt
+++ b/idea/testData/slicer/inflow/diamondHierarchyRootInterfaceFun.results.txt
@@ -1,10 +1,10 @@
-20 val x = a.foo()
-20 val x = a.foo()
-4 fun foo() = 1
-4 fun foo() = 1
-8 override fun foo() = 2
-8 override fun foo() = 2
-12 override fun foo() = 3
-12 override fun foo() = 3
-16 override fun foo() = 4
-16 override fun foo() = 4
+20 val x = a.foo() (in test(A, B, C, D))
+20 val x = a.foo() (in test(A, B, C, D))
+4 fun foo() = 1 (in A)
+4 fun foo() = 1 (in A.foo())
+8 override fun foo() = 2 (in B)
+8 override fun foo() = 2 (in B.foo())
+12 override fun foo() = 3 (in C)
+12 override fun foo() = 3 (in C.foo())
+16 override fun foo() = 4 (in D)
+16 override fun foo() = 4 (in D.foo())
diff --git a/idea/testData/slicer/inflow/doubleLambdaResult.leafGroups.txt b/idea/testData/slicer/inflow/doubleLambdaResult.leafGroups.txt
index 64f6f9b9104fc..fa349b2520192 100644
--- a/idea/testData/slicer/inflow/doubleLambdaResult.leafGroups.txt
+++ b/idea/testData/slicer/inflow/doubleLambdaResult.leafGroups.txt
@@ -1,22 +1,21 @@
-8 val x = foo(1, 2) { { it } }
-8 val x = foo(1, 2) { { it } }
-8 val x = foo(1, 2) { { it } }
+8 val x = foo(1, 2) { { it } } (in test())
+8 val x = foo(1, 2) { { it } } (in test())
+8 val x = foo(1, 2) { { it } } (in test())
3 fun foo(a: Int, b: Int, f: (Int) -> (Int) -> Int): Int {
-4 return f(a)(b)
-4 [LAMBDA IN] return f(a)(b)
-4 [LAMBDA IN] [LAMBDA IN] return f(a)(b)
-3 [LAMBDA IN] [LAMBDA IN] fun foo(a: Int, b: Int, f: (Int) -> (Int) -> Int): Int {
-8 [LAMBDA IN] [LAMBDA IN] val x = foo(1, 2) { { it } }
-8 [LAMBDA IN] val x = foo(1, 2) { { it } }
-8 [LAMBDA IN] val x = foo(1, 2) { { it } }
-8 val x = foo(1, 2) { { it } }
-8 val x = foo(1, 2) { { it } }
-8 [LAMBDA CALLS ARGUMENT #0] val x = foo(1, 2) { { it } }
-8 [LAMBDA CALLS ARGUMENT #0] val x = foo(1, 2) { { it } }
-8 [LAMBDA CALLS] [LAMBDA CALLS ARGUMENT #0] val x = foo(1, 2) { { it } }
-3 [LAMBDA CALLS] [LAMBDA CALLS ARGUMENT #0] fun foo(a: Int, b: Int, f: (Int) -> (Int) -> Int): Int {
-4 [LAMBDA CALLS ARGUMENT #0] return f(a)(b)
-4 return f(a)(b)
-3 fun foo(a: Int, b: Int, f: (Int) -> (Int) -> Int): Int {
-8 val x = foo(1, 2) { { it } }
-
+4 return f(a)(b) (in foo(Int, Int, (Int) -> (Int) -> Int))
+4 [LAMBDA IN] return f(a)(b) (in foo(Int, Int, (Int) -> (Int) -> Int))
+4 [LAMBDA IN] [LAMBDA IN] return f(a)(b) (in foo(Int, Int, (Int) -> (Int) -> Int))
+3 [LAMBDA IN] [LAMBDA IN] fun foo(a: Int, b: Int, f: (Int) -> (Int) -> Int): Int { (in foo(Int, Int, (Int) -> (Int) -> Int))
+8 [LAMBDA IN] [LAMBDA IN] val x = foo(1, 2) { { it } } (in test())
+8 [LAMBDA IN] val x = foo(1, 2) { { it } } (in test())
+8 [LAMBDA IN] val x = foo(1, 2) { { it } } (in test())
+8 val x = foo(1, 2) { { it } } (in test())
+8 val x = foo(1, 2) { { it } } (in test())
+8 [LAMBDA CALLS ARGUMENT #0] val x = foo(1, 2) { { it } } (in test())
+8 [LAMBDA CALLS ARGUMENT #0] val x = foo(1, 2) { { it } } (in test())
+8 [LAMBDA CALLS] [LAMBDA CALLS ARGUMENT #0] val x = foo(1, 2) { { it } } (in test())
+3 [LAMBDA CALLS] [LAMBDA CALLS ARGUMENT #0] fun foo(a: Int, b: Int, f: (Int) -> (Int) -> Int): Int { (in foo(Int, Int, (Int) -> (Int) -> Int))
+4 [LAMBDA CALLS ARGUMENT #0] return f(a)(b) (in foo(Int, Int, (Int) -> (Int) -> Int))
+4 return f(a)(b) (in foo(Int, Int, (Int) -> (Int) -> Int))
+3 fun foo(a: Int, b: Int, f: (Int) -> (Int) -> Int): Int { (in foo(Int, Int, (Int) -> (Int) -> Int))
+8 val x = foo(1, 2) { { it } } (in test())
diff --git a/idea/testData/slicer/inflow/doubleLambdaResult.nullnessGroups.txt b/idea/testData/slicer/inflow/doubleLambdaResult.nullnessGroups.txt
index 0596894705456..0942b6ed7f501 100644
--- a/idea/testData/slicer/inflow/doubleLambdaResult.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/doubleLambdaResult.nullnessGroups.txt
@@ -1,3 +1,3 @@
[NotNull Values]
-8 val x = foo(1, 2) { { it } }
-8 val x = foo(1, 2) { { it } }
+8 val x = foo(1, 2) { { it } } (in test())
+8 val x = foo(1, 2) { { it } } (in test())
diff --git a/idea/testData/slicer/inflow/doubleLambdaResult.results.txt b/idea/testData/slicer/inflow/doubleLambdaResult.results.txt
index f878159826a99..b7a591db73eed 100644
--- a/idea/testData/slicer/inflow/doubleLambdaResult.results.txt
+++ b/idea/testData/slicer/inflow/doubleLambdaResult.results.txt
@@ -1,20 +1,20 @@
-8 val x = foo(1, 2) { { it } }
-8 val x = foo(1, 2) { { it } }
+8 val x = foo(1, 2) { { it } } (in test())
+8 val x = foo(1, 2) { { it } } (in test())
3 fun foo(a: Int, b: Int, f: (Int) -> (Int) -> Int): Int {
-4 return f(a)(b)
-4 [LAMBDA IN] return f(a)(b)
-4 [LAMBDA IN] [LAMBDA IN] return f(a)(b)
-3 [LAMBDA IN] [LAMBDA IN] fun foo(a: Int, b: Int, f: (Int) -> (Int) -> Int): Int {
-8 [LAMBDA IN] [LAMBDA IN] val x = foo(1, 2) { { it } }
-8 [LAMBDA IN] val x = foo(1, 2) { { it } }
-8 [LAMBDA IN] val x = foo(1, 2) { { it } }
-8 val x = foo(1, 2) { { it } }
-8 val x = foo(1, 2) { { it } }
-8 [LAMBDA CALLS ARGUMENT #0] val x = foo(1, 2) { { it } }
-8 [LAMBDA CALLS ARGUMENT #0] val x = foo(1, 2) { { it } }
-8 [LAMBDA CALLS] [LAMBDA CALLS ARGUMENT #0] val x = foo(1, 2) { { it } }
-3 [LAMBDA CALLS] [LAMBDA CALLS ARGUMENT #0] fun foo(a: Int, b: Int, f: (Int) -> (Int) -> Int): Int {
-4 [LAMBDA CALLS ARGUMENT #0] return f(a)(b)
-4 return f(a)(b)
-3 fun foo(a: Int, b: Int, f: (Int) -> (Int) -> Int): Int {
-8 val x = foo(1, 2) { { it } }
+4 return f(a)(b) (in foo(Int, Int, (Int) -> (Int) -> Int))
+4 [LAMBDA IN] return f(a)(b) (in foo(Int, Int, (Int) -> (Int) -> Int))
+4 [LAMBDA IN] [LAMBDA IN] return f(a)(b) (in foo(Int, Int, (Int) -> (Int) -> Int))
+3 [LAMBDA IN] [LAMBDA IN] fun foo(a: Int, b: Int, f: (Int) -> (Int) -> Int): Int { (in foo(Int, Int, (Int) -> (Int) -> Int))
+8 [LAMBDA IN] [LAMBDA IN] val x = foo(1, 2) { { it } } (in test())
+8 [LAMBDA IN] val x = foo(1, 2) { { it } } (in test())
+8 [LAMBDA IN] val x = foo(1, 2) { { it } } (in test())
+8 val x = foo(1, 2) { { it } } (in test())
+8 val x = foo(1, 2) { { it } } (in test())
+8 [LAMBDA CALLS ARGUMENT #0] val x = foo(1, 2) { { it } } (in test())
+8 [LAMBDA CALLS ARGUMENT #0] val x = foo(1, 2) { { it } } (in test())
+8 [LAMBDA CALLS] [LAMBDA CALLS ARGUMENT #0] val x = foo(1, 2) { { it } } (in test())
+3 [LAMBDA CALLS] [LAMBDA CALLS ARGUMENT #0] fun foo(a: Int, b: Int, f: (Int) -> (Int) -> Int): Int { (in foo(Int, Int, (Int) -> (Int) -> Int))
+4 [LAMBDA CALLS ARGUMENT #0] return f(a)(b) (in foo(Int, Int, (Int) -> (Int) -> Int))
+4 return f(a)(b) (in foo(Int, Int, (Int) -> (Int) -> Int))
+3 fun foo(a: Int, b: Int, f: (Int) -> (Int) -> Int): Int { (in foo(Int, Int, (Int) -> (Int) -> Int))
+8 val x = foo(1, 2) { { it } } (in test())
diff --git a/idea/testData/slicer/inflow/extensionLambdaImplicitParameter.leafGroups.txt b/idea/testData/slicer/inflow/extensionLambdaImplicitParameter.leafGroups.txt
index f96e6d5caa92f..a219f56131704 100644
--- a/idea/testData/slicer/inflow/extensionLambdaImplicitParameter.leafGroups.txt
+++ b/idea/testData/slicer/inflow/extensionLambdaImplicitParameter.leafGroups.txt
@@ -1,18 +1,17 @@
-5 f("", 1)
-16 val v = it
-15 [LAMBDA CALLS ARGUMENT #0 EXTENSION] foo {
-4 [LAMBDA CALLS ARGUMENT #0 EXTENSION] fun foo(f: String.(Int) -> Unit) {
-5 f("", 1)
+5 f("", 1) (in foo(String.(Int) -> Unit))
+16 val v = it (in test())
+15 [LAMBDA CALLS ARGUMENT #0 EXTENSION] foo { (in test())
+4 [LAMBDA CALLS ARGUMENT #0 EXTENSION] fun foo(f: String.(Int) -> Unit) { (in foo(String.(Int) -> Unit))
+5 f("", 1) (in foo(String.(Int) -> Unit))
-7 "".f(2)
-16 val v = it
-15 [LAMBDA CALLS ARGUMENT #0 EXTENSION] foo {
-4 [LAMBDA CALLS ARGUMENT #0 EXTENSION] fun foo(f: String.(Int) -> Unit) {
-7 "".f(2)
-
-10 f(3)
-16 val v = it
-15 [LAMBDA CALLS ARGUMENT #0 EXTENSION] foo {
-4 [LAMBDA CALLS ARGUMENT #0 EXTENSION] fun foo(f: String.(Int) -> Unit) {
-10 f(3)
+7 "".f(2) (in foo(String.(Int) -> Unit))
+16 val v = it (in test())
+15 [LAMBDA CALLS ARGUMENT #0 EXTENSION] foo { (in test())
+4 [LAMBDA CALLS ARGUMENT #0 EXTENSION] fun foo(f: String.(Int) -> Unit) { (in foo(String.(Int) -> Unit))
+7 "".f(2) (in foo(String.(Int) -> Unit))
+10 f(3) (in foo(String.(Int) -> Unit))
+16 val v = it (in test())
+15 [LAMBDA CALLS ARGUMENT #0 EXTENSION] foo { (in test())
+4 [LAMBDA CALLS ARGUMENT #0 EXTENSION] fun foo(f: String.(Int) -> Unit) { (in foo(String.(Int) -> Unit))
+10 f(3) (in foo(String.(Int) -> Unit))
diff --git a/idea/testData/slicer/inflow/extensionLambdaImplicitParameter.nullnessGroups.txt b/idea/testData/slicer/inflow/extensionLambdaImplicitParameter.nullnessGroups.txt
index b9d6f1e6c3df5..e3b44f0cfcb74 100644
--- a/idea/testData/slicer/inflow/extensionLambdaImplicitParameter.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/extensionLambdaImplicitParameter.nullnessGroups.txt
@@ -1,4 +1,3 @@
[NotNull Values]
-16 val v = it
-16 val v = it
-
+16 val v = it (in test())
+16 val v = it (in test())
diff --git a/idea/testData/slicer/inflow/extensionLambdaImplicitParameter.results.txt b/idea/testData/slicer/inflow/extensionLambdaImplicitParameter.results.txt
index bd997196ffe21..7060c7a02981d 100644
--- a/idea/testData/slicer/inflow/extensionLambdaImplicitParameter.results.txt
+++ b/idea/testData/slicer/inflow/extensionLambdaImplicitParameter.results.txt
@@ -1,6 +1,6 @@
-16 val v = it
-15 [LAMBDA CALLS ARGUMENT #0 EXTENSION] foo {
-4 [LAMBDA CALLS ARGUMENT #0 EXTENSION] fun foo(f: String.(Int) -> Unit) {
-5 f("", 1)
-7 "".f(2)
-10 f(3)
+16 val v = it (in test())
+15 [LAMBDA CALLS ARGUMENT #0 EXTENSION] foo { (in test())
+4 [LAMBDA CALLS ARGUMENT #0 EXTENSION] fun foo(f: String.(Int) -> Unit) { (in foo(String.(Int) -> Unit))
+5 f("", 1) (in foo(String.(Int) -> Unit))
+7 "".f(2) (in foo(String.(Int) -> Unit))
+10 f(3) (in foo(String.(Int) -> Unit))
diff --git a/idea/testData/slicer/inflow/extensionLambdaParameter.leafGroups.txt b/idea/testData/slicer/inflow/extensionLambdaParameter.leafGroups.txt
index cf7889b8c3e9c..e266fe18dd986 100644
--- a/idea/testData/slicer/inflow/extensionLambdaParameter.leafGroups.txt
+++ b/idea/testData/slicer/inflow/extensionLambdaParameter.leafGroups.txt
@@ -1,21 +1,20 @@
-5 f("", 1)
-16 val v = i
-15 foo { i ->
-15 [LAMBDA CALLS ARGUMENT #0 EXTENSION] foo { i ->
-4 [LAMBDA CALLS ARGUMENT #0 EXTENSION] fun foo(f: String.(Int) -> Unit) {
-5 f("", 1)
+5 f("", 1) (in foo(String.(Int) -> Unit))
+16 val v = i (in test())
+15 foo { i -> (in test())
+15 [LAMBDA CALLS ARGUMENT #0 EXTENSION] foo { i -> (in test())
+4 [LAMBDA CALLS ARGUMENT #0 EXTENSION] fun foo(f: String.(Int) -> Unit) { (in foo(String.(Int) -> Unit))
+5 f("", 1) (in foo(String.(Int) -> Unit))
-7 "".f(2)
-16 val v = i
-15 foo { i ->
-15 [LAMBDA CALLS ARGUMENT #0 EXTENSION] foo { i ->
-4 [LAMBDA CALLS ARGUMENT #0 EXTENSION] fun foo(f: String.(Int) -> Unit) {
-7 "".f(2)
-
-10 f(3)
-16 val v = i
-15 foo { i ->
-15 [LAMBDA CALLS ARGUMENT #0 EXTENSION] foo { i ->
-4 [LAMBDA CALLS ARGUMENT #0 EXTENSION] fun foo(f: String.(Int) -> Unit) {
-10 f(3)
+7 "".f(2) (in foo(String.(Int) -> Unit))
+16 val v = i (in test())
+15 foo { i -> (in test())
+15 [LAMBDA CALLS ARGUMENT #0 EXTENSION] foo { i -> (in test())
+4 [LAMBDA CALLS ARGUMENT #0 EXTENSION] fun foo(f: String.(Int) -> Unit) { (in foo(String.(Int) -> Unit))
+7 "".f(2) (in foo(String.(Int) -> Unit))
+10 f(3) (in foo(String.(Int) -> Unit))
+16 val v = i (in test())
+15 foo { i -> (in test())
+15 [LAMBDA CALLS ARGUMENT #0 EXTENSION] foo { i -> (in test())
+4 [LAMBDA CALLS ARGUMENT #0 EXTENSION] fun foo(f: String.(Int) -> Unit) { (in foo(String.(Int) -> Unit))
+10 f(3) (in foo(String.(Int) -> Unit))
diff --git a/idea/testData/slicer/inflow/extensionLambdaParameter.nullnessGroups.txt b/idea/testData/slicer/inflow/extensionLambdaParameter.nullnessGroups.txt
index 2295e82c5c5fb..261a1600c7a03 100644
--- a/idea/testData/slicer/inflow/extensionLambdaParameter.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/extensionLambdaParameter.nullnessGroups.txt
@@ -1,4 +1,3 @@
[NotNull Values]
-16 val v = i
-16 val v = i
-
+16 val v = i (in test())
+16 val v = i (in test())
diff --git a/idea/testData/slicer/inflow/extensionLambdaParameter.results.txt b/idea/testData/slicer/inflow/extensionLambdaParameter.results.txt
index a06b283271da6..94def5970820d 100644
--- a/idea/testData/slicer/inflow/extensionLambdaParameter.results.txt
+++ b/idea/testData/slicer/inflow/extensionLambdaParameter.results.txt
@@ -1,7 +1,7 @@
-16 val v = i
-15 foo { i ->
-15 [LAMBDA CALLS ARGUMENT #0 EXTENSION] foo { i ->
-4 [LAMBDA CALLS ARGUMENT #0 EXTENSION] fun foo(f: String.(Int) -> Unit) {
-5 f("", 1)
-7 "".f(2)
-10 f(3)
+16 val v = i (in test())
+15 foo { i -> (in test())
+15 [LAMBDA CALLS ARGUMENT #0 EXTENSION] foo { i -> (in test())
+4 [LAMBDA CALLS ARGUMENT #0 EXTENSION] fun foo(f: String.(Int) -> Unit) { (in foo(String.(Int) -> Unit))
+5 f("", 1) (in foo(String.(Int) -> Unit))
+7 "".f(2) (in foo(String.(Int) -> Unit))
+10 f(3) (in foo(String.(Int) -> Unit))
diff --git a/idea/testData/slicer/inflow/extensionLambdaReceiver.leafGroups.txt b/idea/testData/slicer/inflow/extensionLambdaReceiver.leafGroups.txt
index ca3caa174f3bd..0e0b2c0614ee2 100644
--- a/idea/testData/slicer/inflow/extensionLambdaReceiver.leafGroups.txt
+++ b/idea/testData/slicer/inflow/extensionLambdaReceiver.leafGroups.txt
@@ -1,9 +1,8 @@
-5 with("A") {
-6 val v = this
-6 val v = this
-5 [LAMBDA CALLS RECEIVER] with("A") {
-LIB (INLINE CALL with) [LAMBDA CALLS RECEIVER] public inline fun with(receiver: T, block: T.() -> R): R {
-LIB (INLINE CALL with) return receiver.block()
-LIB (INLINE CALL with) public inline fun with(receiver: T, block: T.() -> R): R {
-5 with("A") {
-
+5 with("A") { (in foo())
+6 val v = this (in foo())
+6 val v = this (in foo())
+5 [LAMBDA CALLS RECEIVER] with("A") { (in foo())
+LIB (INLINE CALL with) [LAMBDA CALLS RECEIVER] public inline fun with(receiver: T, block: T.() -> R): R { (in with(T, T.() -> R))
+LIB (INLINE CALL with) return receiver.block() (in with(T, T.() -> R))
+LIB (INLINE CALL with) public inline fun with(receiver: T, block: T.() -> R): R { (in with(T, T.() -> R))
+5 with("A") { (in foo())
diff --git a/idea/testData/slicer/inflow/extensionLambdaReceiver.nullnessGroups.txt b/idea/testData/slicer/inflow/extensionLambdaReceiver.nullnessGroups.txt
index a27379352c3b7..efcc911298b1d 100644
--- a/idea/testData/slicer/inflow/extensionLambdaReceiver.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/extensionLambdaReceiver.nullnessGroups.txt
@@ -1,4 +1,3 @@
[NotNull Values]
-6 val v = this
-6 val v = this
-
+6 val v = this (in foo())
+6 val v = this (in foo())
diff --git a/idea/testData/slicer/inflow/extensionLambdaReceiver.results.txt b/idea/testData/slicer/inflow/extensionLambdaReceiver.results.txt
index 220ad91e7de52..59062eb038298 100644
--- a/idea/testData/slicer/inflow/extensionLambdaReceiver.results.txt
+++ b/idea/testData/slicer/inflow/extensionLambdaReceiver.results.txt
@@ -1,7 +1,7 @@
-6 val v = this
-6 val v = this
-5 [LAMBDA CALLS RECEIVER] with("A") {
-LIB (INLINE CALL with) [LAMBDA CALLS RECEIVER] public inline fun with(receiver: T, block: T.() -> R): R {
-LIB (INLINE CALL with) return receiver.block()
-LIB (INLINE CALL with) public inline fun with(receiver: T, block: T.() -> R): R {
-5 with("A") {
+6 val v = this (in foo())
+6 val v = this (in foo())
+5 [LAMBDA CALLS RECEIVER] with("A") { (in foo())
+LIB (INLINE CALL with) [LAMBDA CALLS RECEIVER] public inline fun with(receiver: T, block: T.() -> R): R { (in with(T, T.() -> R))
+LIB (INLINE CALL with) return receiver.block() (in with(T, T.() -> R))
+LIB (INLINE CALL with) public inline fun with(receiver: T, block: T.() -> R): R { (in with(T, T.() -> R))
+5 with("A") { (in foo())
diff --git a/idea/testData/slicer/inflow/funParamerer.leafGroups.txt b/idea/testData/slicer/inflow/funParamerer.leafGroups.txt
index 45f758b29e757..05805d05af2c0 100644
--- a/idea/testData/slicer/inflow/funParamerer.leafGroups.txt
+++ b/idea/testData/slicer/inflow/funParamerer.leafGroups.txt
@@ -1,8 +1,7 @@
3 FunParamererKt.foo(1);
-5 fun foo(n: Int, s: String = "???") {
+5 fun foo(n: Int, s: String = "???") { (in foo(Int, String = ...))
3 FunParamererKt.foo(1);
-10 foo(1)
-5 fun foo(n: Int, s: String = "???") {
-10 foo(1)
-
+10 foo(1) (in test())
+5 fun foo(n: Int, s: String = "???") { (in foo(Int, String = ...))
+10 foo(1) (in test())
diff --git a/idea/testData/slicer/inflow/funParamerer.nullnessGroups.txt b/idea/testData/slicer/inflow/funParamerer.nullnessGroups.txt
index 0ace9d1c663e9..eed2e6ef8c975 100644
--- a/idea/testData/slicer/inflow/funParamerer.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/funParamerer.nullnessGroups.txt
@@ -1,4 +1,3 @@
[NotNull Values]
-5 fun foo(n: Int, s: String = "???") {
-5 fun foo(n: Int, s: String = "???") {
-
+5 fun foo(n: Int, s: String = "???") { (in foo(Int, String = ...))
+5 fun foo(n: Int, s: String = "???") { (in foo(Int, String = ...))
diff --git a/idea/testData/slicer/inflow/funParamerer.results.txt b/idea/testData/slicer/inflow/funParamerer.results.txt
index 13f0b124e55b0..eb627a5f80738 100644
--- a/idea/testData/slicer/inflow/funParamerer.results.txt
+++ b/idea/testData/slicer/inflow/funParamerer.results.txt
@@ -1,8 +1,8 @@
-5 fun foo(n: Int, s: String = "???") {
+5 fun foo(n: Int, s: String = "???") { (in foo(Int, String = ...))
3 FunParamererKt.foo(1);
4 FunParamererKt.foo(1, "2");
-10 foo(1)
-11 foo(1, "2")
-12 foo(1, s = "2")
-13 foo(n = 1, s = "2")
-14 foo(s = "2", n = 1)
+10 foo(1) (in test())
+11 foo(1, "2") (in test())
+12 foo(1, s = "2") (in test())
+13 foo(n = 1, s = "2") (in test())
+14 foo(s = "2", n = 1) (in test())
diff --git a/idea/testData/slicer/inflow/funParamererWithDefault.leafGroups.txt b/idea/testData/slicer/inflow/funParamererWithDefault.leafGroups.txt
index 786ed9c6d5c1e..171812ca68855 100644
--- a/idea/testData/slicer/inflow/funParamererWithDefault.leafGroups.txt
+++ b/idea/testData/slicer/inflow/funParamererWithDefault.leafGroups.txt
@@ -1,12 +1,11 @@
4 FunParamererWithDefaultKt.foo(1, "2");
-5 fun foo(n: Int, s: String = "???") {
+5 fun foo(n: Int, s: String = "???") { (in foo(Int, String = ...))
4 FunParamererWithDefaultKt.foo(1, "2");
-11 foo(1, "2")
-5 fun foo(n: Int, s: String = "???") {
-11 foo(1, "2")
-
-5 fun foo(n: Int, s: String = "???") {
-5 fun foo(n: Int, s: String = "???") {
-5 fun foo(n: Int, s: String = "???") {
+11 foo(1, "2") (in test())
+5 fun foo(n: Int, s: String = "???") { (in foo(Int, String = ...))
+11 foo(1, "2") (in test())
+5 fun foo(n: Int, s: String = "???") { (in foo(Int, String = ...))
+5 fun foo(n: Int, s: String = "???") { (in foo(Int, String = ...))
+5 fun foo(n: Int, s: String = "???") { (in foo(Int, String = ...))
diff --git a/idea/testData/slicer/inflow/funParamererWithDefault.nullnessGroups.txt b/idea/testData/slicer/inflow/funParamererWithDefault.nullnessGroups.txt
index adccf5a64f1d3..455150e696177 100644
--- a/idea/testData/slicer/inflow/funParamererWithDefault.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/funParamererWithDefault.nullnessGroups.txt
@@ -1,4 +1,3 @@
[NotNull Values]
-5 fun foo(n: Int, s: String = "???") {
-5 fun foo(n: Int, s: String = "???") {
-
+5 fun foo(n: Int, s: String = "???") { (in foo(Int, String = ...))
+5 fun foo(n: Int, s: String = "???") { (in foo(Int, String = ...))
diff --git a/idea/testData/slicer/inflow/funParamererWithDefault.results.txt b/idea/testData/slicer/inflow/funParamererWithDefault.results.txt
index e3dbfe558679c..8931ffcbd54e7 100644
--- a/idea/testData/slicer/inflow/funParamererWithDefault.results.txt
+++ b/idea/testData/slicer/inflow/funParamererWithDefault.results.txt
@@ -1,7 +1,7 @@
-5 fun foo(n: Int, s: String = "???") {
-5 fun foo(n: Int, s: String = "???") {
+5 fun foo(n: Int, s: String = "???") { (in foo(Int, String = ...))
+5 fun foo(n: Int, s: String = "???") { (in foo(Int, String = ...))
4 FunParamererWithDefaultKt.foo(1, "2");
-11 foo(1, "2")
-12 foo(1, s = "2")
-13 foo(n = 1, s = "2")
-14 foo(s = "2", n = 1)
+11 foo(1, "2") (in test())
+12 foo(1, s = "2") (in test())
+13 foo(n = 1, s = "2") (in test())
+14 foo(s = "2", n = 1) (in test())
diff --git a/idea/testData/slicer/inflow/funResultViaCallableRef.leafGroups.txt b/idea/testData/slicer/inflow/funResultViaCallableRef.leafGroups.txt
index 78f794f3de09c..18c674a797966 100644
--- a/idea/testData/slicer/inflow/funResultViaCallableRef.leafGroups.txt
+++ b/idea/testData/slicer/inflow/funResultViaCallableRef.leafGroups.txt
@@ -1,12 +1,11 @@
-8 fun bar(n: Int) = n
-9 val x = foo(::bar)
-9 val x = foo(::bar)
+8 fun bar(n: Int) = n (in test())
+9 val x = foo(::bar) (in test())
+9 val x = foo(::bar) (in test())
3 fun foo(f: (Int) -> Int): Int {
-4 return f(1)
-4 [LAMBDA IN] return f(1)
-3 [LAMBDA IN] fun foo(f: (Int) -> Int): Int {
-9 [LAMBDA IN] val x = foo(::bar)
-8 fun bar(n: Int) = n
-8 fun bar(n: Int) = n
-8 fun bar(n: Int) = n
-
+4 return f(1) (in foo((Int) -> Int))
+4 [LAMBDA IN] return f(1) (in foo((Int) -> Int))
+3 [LAMBDA IN] fun foo(f: (Int) -> Int): Int { (in foo((Int) -> Int))
+9 [LAMBDA IN] val x = foo(::bar) (in test())
+8 fun bar(n: Int) = n (in test())
+8 fun bar(n: Int) = n (in test())
+8 fun bar(n: Int) = n (in test())
diff --git a/idea/testData/slicer/inflow/funResultViaCallableRef.nullnessGroups.txt b/idea/testData/slicer/inflow/funResultViaCallableRef.nullnessGroups.txt
index fc81d14c64bdf..3574b175c0c10 100644
--- a/idea/testData/slicer/inflow/funResultViaCallableRef.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/funResultViaCallableRef.nullnessGroups.txt
@@ -1,3 +1,3 @@
[NotNull Values]
-9 val x = foo(::bar)
-9 val x = foo(::bar)
+9 val x = foo(::bar) (in test())
+9 val x = foo(::bar) (in test())
diff --git a/idea/testData/slicer/inflow/funResultViaCallableRef.results.txt b/idea/testData/slicer/inflow/funResultViaCallableRef.results.txt
index 9a7c0d68e5ed3..ad1adfb1de5dc 100644
--- a/idea/testData/slicer/inflow/funResultViaCallableRef.results.txt
+++ b/idea/testData/slicer/inflow/funResultViaCallableRef.results.txt
@@ -1,10 +1,10 @@
-9 val x = foo(::bar)
-9 val x = foo(::bar)
+9 val x = foo(::bar) (in test())
+9 val x = foo(::bar) (in test())
3 fun foo(f: (Int) -> Int): Int {
-4 return f(1)
-4 [LAMBDA IN] return f(1)
-3 [LAMBDA IN] fun foo(f: (Int) -> Int): Int {
-9 [LAMBDA IN] val x = foo(::bar)
-8 fun bar(n: Int) = n
-8 fun bar(n: Int) = n
-8 fun bar(n: Int) = n
+4 return f(1) (in foo((Int) -> Int))
+4 [LAMBDA IN] return f(1) (in foo((Int) -> Int))
+3 [LAMBDA IN] fun foo(f: (Int) -> Int): Int { (in foo((Int) -> Int))
+9 [LAMBDA IN] val x = foo(::bar) (in test())
+8 fun bar(n: Int) = n (in test())
+8 fun bar(n: Int) = n (in test())
+8 fun bar(n: Int) = n (in test())
diff --git a/idea/testData/slicer/inflow/funResultViaCallableRefWithAssignment.leafGroups.txt b/idea/testData/slicer/inflow/funResultViaCallableRefWithAssignment.leafGroups.txt
index 0501bacea4dd7..52c5baa3b78fb 100644
--- a/idea/testData/slicer/inflow/funResultViaCallableRefWithAssignment.leafGroups.txt
+++ b/idea/testData/slicer/inflow/funResultViaCallableRefWithAssignment.leafGroups.txt
@@ -1,14 +1,13 @@
-8 fun bar(n: Int) = n
-10 val x = foo(f)
-10 val x = foo(f)
+8 fun bar(n: Int) = n (in test())
+10 val x = foo(f) (in test())
+10 val x = foo(f) (in test())
3 fun foo(f: (Int) -> Int): Int {
-4 return f(1)
-4 [LAMBDA IN] return f(1)
-3 [LAMBDA IN] fun foo(f: (Int) -> Int): Int {
-10 [LAMBDA IN] val x = foo(f)
-9 [LAMBDA IN] val f = ::bar
-9 [LAMBDA IN] val f = ::bar
-8 fun bar(n: Int) = n
-8 fun bar(n: Int) = n
-8 fun bar(n: Int) = n
-
+4 return f(1) (in foo((Int) -> Int))
+4 [LAMBDA IN] return f(1) (in foo((Int) -> Int))
+3 [LAMBDA IN] fun foo(f: (Int) -> Int): Int { (in foo((Int) -> Int))
+10 [LAMBDA IN] val x = foo(f) (in test())
+9 [LAMBDA IN] val f = ::bar (in test())
+9 [LAMBDA IN] val f = ::bar (in test())
+8 fun bar(n: Int) = n (in test())
+8 fun bar(n: Int) = n (in test())
+8 fun bar(n: Int) = n (in test())
diff --git a/idea/testData/slicer/inflow/funResultViaCallableRefWithAssignment.nullnessGroups.txt b/idea/testData/slicer/inflow/funResultViaCallableRefWithAssignment.nullnessGroups.txt
index 41b66205857f0..b5647a9aba750 100644
--- a/idea/testData/slicer/inflow/funResultViaCallableRefWithAssignment.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/funResultViaCallableRefWithAssignment.nullnessGroups.txt
@@ -1,3 +1,3 @@
[NotNull Values]
-10 val x = foo(f)
-10 val x = foo(f)
+10 val x = foo(f) (in test())
+10 val x = foo(f) (in test())
diff --git a/idea/testData/slicer/inflow/funResultViaCallableRefWithAssignment.results.txt b/idea/testData/slicer/inflow/funResultViaCallableRefWithAssignment.results.txt
index cdcb5f556c2ba..d661875162117 100644
--- a/idea/testData/slicer/inflow/funResultViaCallableRefWithAssignment.results.txt
+++ b/idea/testData/slicer/inflow/funResultViaCallableRefWithAssignment.results.txt
@@ -1,12 +1,12 @@
-10 val x = foo(f)
-10 val x = foo(f)
+10 val x = foo(f) (in test())
+10 val x = foo(f) (in test())
3 fun foo(f: (Int) -> Int): Int {
-4 return f(1)
-4 [LAMBDA IN] return f(1)
-3 [LAMBDA IN] fun foo(f: (Int) -> Int): Int {
-10 [LAMBDA IN] val x = foo(f)
-9 [LAMBDA IN] val f = ::bar
-9 [LAMBDA IN] val f = ::bar
-8 fun bar(n: Int) = n
-8 fun bar(n: Int) = n
-8 fun bar(n: Int) = n
+4 return f(1) (in foo((Int) -> Int))
+4 [LAMBDA IN] return f(1) (in foo((Int) -> Int))
+3 [LAMBDA IN] fun foo(f: (Int) -> Int): Int { (in foo((Int) -> Int))
+10 [LAMBDA IN] val x = foo(f) (in test())
+9 [LAMBDA IN] val f = ::bar (in test())
+9 [LAMBDA IN] val f = ::bar (in test())
+8 fun bar(n: Int) = n (in test())
+8 fun bar(n: Int) = n (in test())
+8 fun bar(n: Int) = n (in test())
diff --git a/idea/testData/slicer/inflow/funResultViaCallableRefWithDirectCall.leafGroups.txt b/idea/testData/slicer/inflow/funResultViaCallableRefWithDirectCall.leafGroups.txt
index 439052b0033c7..5112d81d6a0a8 100644
--- a/idea/testData/slicer/inflow/funResultViaCallableRefWithDirectCall.leafGroups.txt
+++ b/idea/testData/slicer/inflow/funResultViaCallableRefWithDirectCall.leafGroups.txt
@@ -1,9 +1,8 @@
-5 val x = (::bar)(1)
-5 val x = (::bar)(1)
-5 val x = (::bar)(1)
-5 [LAMBDA IN] val x = (::bar)(1)
-4 fun bar(n: Int) = n
-4 fun bar(n: Int) = n
-4 fun bar(n: Int) = n
-5 val x = (::bar)(1)
-
+5 val x = (::bar)(1) (in test())
+5 val x = (::bar)(1) (in test())
+5 val x = (::bar)(1) (in test())
+5 [LAMBDA IN] val x = (::bar)(1) (in test())
+4 fun bar(n: Int) = n (in test())
+4 fun bar(n: Int) = n (in test())
+4 fun bar(n: Int) = n (in test())
+5 val x = (::bar)(1) (in test())
diff --git a/idea/testData/slicer/inflow/funResultViaCallableRefWithDirectCall.nullnessGroups.txt b/idea/testData/slicer/inflow/funResultViaCallableRefWithDirectCall.nullnessGroups.txt
index 8910ec7b0609a..6b80c1ddd7ed0 100644
--- a/idea/testData/slicer/inflow/funResultViaCallableRefWithDirectCall.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/funResultViaCallableRefWithDirectCall.nullnessGroups.txt
@@ -1,3 +1,3 @@
[NotNull Values]
-5 val x = (::bar)(1)
-5 val x = (::bar)(1)
+5 val x = (::bar)(1) (in test())
+5 val x = (::bar)(1) (in test())
diff --git a/idea/testData/slicer/inflow/funResultViaCallableRefWithDirectCall.results.txt b/idea/testData/slicer/inflow/funResultViaCallableRefWithDirectCall.results.txt
index 0ddad2022ee59..372675d9fca79 100644
--- a/idea/testData/slicer/inflow/funResultViaCallableRefWithDirectCall.results.txt
+++ b/idea/testData/slicer/inflow/funResultViaCallableRefWithDirectCall.results.txt
@@ -1,7 +1,7 @@
-5 val x = (::bar)(1)
-5 val x = (::bar)(1)
-5 [LAMBDA IN] val x = (::bar)(1)
-4 fun bar(n: Int) = n
-4 fun bar(n: Int) = n
-4 fun bar(n: Int) = n
-5 val x = (::bar)(1)
+5 val x = (::bar)(1) (in test())
+5 val x = (::bar)(1) (in test())
+5 [LAMBDA IN] val x = (::bar)(1) (in test())
+4 fun bar(n: Int) = n (in test())
+4 fun bar(n: Int) = n (in test())
+4 fun bar(n: Int) = n (in test())
+5 val x = (::bar)(1) (in test())
diff --git a/idea/testData/slicer/inflow/funWithExpressionBody.leafGroups.txt b/idea/testData/slicer/inflow/funWithExpressionBody.leafGroups.txt
index a9b007f1ff514..cf2536afc7440 100644
--- a/idea/testData/slicer/inflow/funWithExpressionBody.leafGroups.txt
+++ b/idea/testData/slicer/inflow/funWithExpressionBody.leafGroups.txt
@@ -1,4 +1,3 @@
-3 fun foo(n: Int) = n + 1
+3 fun foo(n: Int) = n + 1 (in foo(Int))
3 fun foo(n: Int) = n + 1
-3 fun foo(n: Int) = n + 1
-
+3 fun foo(n: Int) = n + 1 (in foo(Int))
diff --git a/idea/testData/slicer/inflow/funWithExpressionBody.results.txt b/idea/testData/slicer/inflow/funWithExpressionBody.results.txt
index f1737af11fc1e..947cf84b8d100 100644
--- a/idea/testData/slicer/inflow/funWithExpressionBody.results.txt
+++ b/idea/testData/slicer/inflow/funWithExpressionBody.results.txt
@@ -1,2 +1,2 @@
3 fun foo(n: Int) = n + 1
-3 fun foo(n: Int) = n + 1
+3 fun foo(n: Int) = n + 1 (in foo(Int))
diff --git a/idea/testData/slicer/inflow/funWithReturnExpressions.leafGroups.txt b/idea/testData/slicer/inflow/funWithReturnExpressions.leafGroups.txt
index 693e710fc7ca0..f6163a22da9f1 100644
--- a/idea/testData/slicer/inflow/funWithReturnExpressions.leafGroups.txt
+++ b/idea/testData/slicer/inflow/funWithReturnExpressions.leafGroups.txt
@@ -1,9 +1,8 @@
-5 return -n
+5 return -n (in foo(Int))
3 fun foo(n: Int): Int {
-5 return -n
+5 return -n (in foo(Int))
-3 fun foo(n: Int): Int {
+3 fun foo(n: Int): Int { (in foo(Int))
3 fun foo(n: Int): Int {
-4 if (n > 0) return n
-3 fun foo(n: Int): Int {
-
+4 if (n > 0) return n (in foo(Int))
+3 fun foo(n: Int): Int { (in foo(Int))
diff --git a/idea/testData/slicer/inflow/funWithReturnExpressions.results.txt b/idea/testData/slicer/inflow/funWithReturnExpressions.results.txt
index 74c52386b4c5a..408f6354afba0 100644
--- a/idea/testData/slicer/inflow/funWithReturnExpressions.results.txt
+++ b/idea/testData/slicer/inflow/funWithReturnExpressions.results.txt
@@ -1,4 +1,4 @@
3 fun foo(n: Int): Int {
-4 if (n > 0) return n
-3 fun foo(n: Int): Int {
-5 return -n
+4 if (n > 0) return n (in foo(Int))
+3 fun foo(n: Int): Int { (in foo(Int))
+5 return -n (in foo(Int))
diff --git a/idea/testData/slicer/inflow/getterAndSetterUsingField.leafGroups.txt b/idea/testData/slicer/inflow/getterAndSetterUsingField.leafGroups.txt
index ccea0c4374ba3..549c33f274269 100644
--- a/idea/testData/slicer/inflow/getterAndSetterUsingField.leafGroups.txt
+++ b/idea/testData/slicer/inflow/getterAndSetterUsingField.leafGroups.txt
@@ -1,23 +1,22 @@
-4 var foo: Int = -1
-11 val x = foo
-4 var foo: Int = -1
-4 var foo: Int = -1
+4 var foo: Int = -1 (in A.foo: Int)
+11 val x = foo (in A.test())
+4 var foo: Int = -1 (in A)
+4 var foo: Int = -1 (in A.foo: Int)
-7 field = if (b) value else 0
-11 val x = foo
-4 var foo: Int = -1
-5 get() = if (b) field else 0
-5 get() = if (b) field else 0
-7 field = if (b) value else 0
-7 field = if (b) value else 0
-
-12 foo = 1
-11 val x = foo
-4 var foo: Int = -1
-5 get() = if (b) field else 0
-5 get() = if (b) field else 0
-7 field = if (b) value else 0
-7 field = if (b) value else 0
-6 set(value) {
-12 foo = 1
+7 field = if (b) value else 0 (in A.foo: Int)
+11 val x = foo (in A.test())
+4 var foo: Int = -1 (in A)
+5 get() = if (b) field else 0 (in A.foo: Int)
+5 get() = if (b) field else 0 (in A.foo: Int)
+7 field = if (b) value else 0 (in A.foo: Int)
+7 field = if (b) value else 0 (in A.foo: Int)
+12 foo = 1 (in A.test())
+11 val x = foo (in A.test())
+4 var foo: Int = -1 (in A)
+5 get() = if (b) field else 0 (in A.foo: Int)
+5 get() = if (b) field else 0 (in A.foo: Int)
+7 field = if (b) value else 0 (in A.foo: Int)
+7 field = if (b) value else 0 (in A.foo: Int)
+6 set(value) { (in A.foo: Int)
+12 foo = 1 (in A.test())
diff --git a/idea/testData/slicer/inflow/getterAndSetterUsingField.nullnessGroups.txt b/idea/testData/slicer/inflow/getterAndSetterUsingField.nullnessGroups.txt
index 20caa224a234c..94793893a4aa1 100644
--- a/idea/testData/slicer/inflow/getterAndSetterUsingField.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/getterAndSetterUsingField.nullnessGroups.txt
@@ -1,3 +1,3 @@
[NotNull Values]
-11 val x = foo
-11 val x = foo
+11 val x = foo (in A.test())
+11 val x = foo (in A.test())
diff --git a/idea/testData/slicer/inflow/getterAndSetterUsingField.results.txt b/idea/testData/slicer/inflow/getterAndSetterUsingField.results.txt
index 5685e475f41f5..1b95a6de7d065 100644
--- a/idea/testData/slicer/inflow/getterAndSetterUsingField.results.txt
+++ b/idea/testData/slicer/inflow/getterAndSetterUsingField.results.txt
@@ -1,11 +1,11 @@
-11 val x = foo
-4 var foo: Int = -1
-4 var foo: Int = -1
-5 get() = if (b) field else 0
-5 get() = if (b) field else 0
-7 field = if (b) value else 0
-7 field = if (b) value else 0
-6 set(value) {
-12 foo = 1
-7 field = if (b) value else 0
-5 get() = if (b) field else 0
+11 val x = foo (in A.test())
+4 var foo: Int = -1 (in A)
+4 var foo: Int = -1 (in A.foo: Int)
+5 get() = if (b) field else 0 (in A.foo: Int)
+5 get() = if (b) field else 0 (in A.foo: Int)
+7 field = if (b) value else 0 (in A.foo: Int)
+7 field = if (b) value else 0 (in A.foo: Int)
+6 set(value) { (in A.foo: Int)
+12 foo = 1 (in A.test())
+7 field = if (b) value else 0 (in A.foo: Int)
+5 get() = if (b) field else 0 (in A.foo: Int)
diff --git a/idea/testData/slicer/inflow/getterExpressionBody.leafGroups.txt b/idea/testData/slicer/inflow/getterExpressionBody.leafGroups.txt
index 4b6b277156174..d12ee6d983243 100644
--- a/idea/testData/slicer/inflow/getterExpressionBody.leafGroups.txt
+++ b/idea/testData/slicer/inflow/getterExpressionBody.leafGroups.txt
@@ -1,6 +1,5 @@
-4 get() = 0
-7 val x = foo
-7 val x = foo
+4 get() = 0 (in foo: Int)
+7 val x = foo (in test())
+7 val x = foo (in test())
3 val foo: Int
-4 get() = 0
-
+4 get() = 0 (in foo: Int)
diff --git a/idea/testData/slicer/inflow/getterExpressionBody.nullnessGroups.txt b/idea/testData/slicer/inflow/getterExpressionBody.nullnessGroups.txt
index 142739bce1141..b14ba93c49a69 100644
--- a/idea/testData/slicer/inflow/getterExpressionBody.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/getterExpressionBody.nullnessGroups.txt
@@ -1,3 +1,3 @@
[NotNull Values]
-7 val x = foo
-7 val x = foo
+7 val x = foo (in test())
+7 val x = foo (in test())
diff --git a/idea/testData/slicer/inflow/getterExpressionBody.results.txt b/idea/testData/slicer/inflow/getterExpressionBody.results.txt
index 30090a4b8f577..35ccc7dbb7db1 100644
--- a/idea/testData/slicer/inflow/getterExpressionBody.results.txt
+++ b/idea/testData/slicer/inflow/getterExpressionBody.results.txt
@@ -1,4 +1,4 @@
-7 val x = foo
-7 val x = foo
+7 val x = foo (in test())
+7 val x = foo (in test())
3 val foo: Int
-4 get() = 0
+4 get() = 0 (in foo: Int)
diff --git a/idea/testData/slicer/inflow/getterReturnExpression.leafGroups.txt b/idea/testData/slicer/inflow/getterReturnExpression.leafGroups.txt
index 462676a98b7bb..218770a1e979a 100644
--- a/idea/testData/slicer/inflow/getterReturnExpression.leafGroups.txt
+++ b/idea/testData/slicer/inflow/getterReturnExpression.leafGroups.txt
@@ -1,6 +1,5 @@
-5 return 0
-9 val x = foo
-9 val x = foo
+5 return 0 (in foo: Int)
+9 val x = foo (in test())
+9 val x = foo (in test())
3 val foo: Int
-5 return 0
-
+5 return 0 (in foo: Int)
diff --git a/idea/testData/slicer/inflow/getterReturnExpression.nullnessGroups.txt b/idea/testData/slicer/inflow/getterReturnExpression.nullnessGroups.txt
index 841a24d157ef3..6faa0f5c6e8d6 100644
--- a/idea/testData/slicer/inflow/getterReturnExpression.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/getterReturnExpression.nullnessGroups.txt
@@ -1,3 +1,3 @@
[NotNull Values]
-9 val x = foo
-9 val x = foo
+9 val x = foo (in test())
+9 val x = foo (in test())
diff --git a/idea/testData/slicer/inflow/getterReturnExpression.results.txt b/idea/testData/slicer/inflow/getterReturnExpression.results.txt
index 6f4cd78667831..7ba85ffbfd18f 100644
--- a/idea/testData/slicer/inflow/getterReturnExpression.results.txt
+++ b/idea/testData/slicer/inflow/getterReturnExpression.results.txt
@@ -1,4 +1,4 @@
-9 val x = foo
-9 val x = foo
+9 val x = foo (in test())
+9 val x = foo (in test())
3 val foo: Int
-5 return 0
+5 return 0 (in foo: Int)
diff --git a/idea/testData/slicer/inflow/ifExpression.leafGroups.txt b/idea/testData/slicer/inflow/ifExpression.leafGroups.txt
index 7461694b02b5e..164913e921937 100644
--- a/idea/testData/slicer/inflow/ifExpression.leafGroups.txt
+++ b/idea/testData/slicer/inflow/ifExpression.leafGroups.txt
@@ -1,11 +1,10 @@
-3 fun test(m: Int, n: Int) {
-4 val x = if (m > 1) n else 1
-4 val x = if (m > 1) n else 1
-4 val x = if (m > 1) n else 1
-3 fun test(m: Int, n: Int) {
-
-4 val x = if (m > 1) n else 1
-4 val x = if (m > 1) n else 1
-4 val x = if (m > 1) n else 1
-4 val x = if (m > 1) n else 1
+3 fun test(m: Int, n: Int) { (in test(Int, Int))
+4 val x = if (m > 1) n else 1 (in test(Int, Int))
+4 val x = if (m > 1) n else 1 (in test(Int, Int))
+4 val x = if (m > 1) n else 1 (in test(Int, Int))
+3 fun test(m: Int, n: Int) { (in test(Int, Int))
+4 val x = if (m > 1) n else 1 (in test(Int, Int))
+4 val x = if (m > 1) n else 1 (in test(Int, Int))
+4 val x = if (m > 1) n else 1 (in test(Int, Int))
+4 val x = if (m > 1) n else 1 (in test(Int, Int))
diff --git a/idea/testData/slicer/inflow/ifExpression.nullnessGroups.txt b/idea/testData/slicer/inflow/ifExpression.nullnessGroups.txt
index ffbb4d2f89ee2..8b9df9ed724c7 100644
--- a/idea/testData/slicer/inflow/ifExpression.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/ifExpression.nullnessGroups.txt
@@ -1,3 +1,3 @@
[NotNull Values]
-4 val x = if (m > 1) n else 1
-4 val x = if (m > 1) n else 1
+4 val x = if (m > 1) n else 1 (in test(Int, Int))
+4 val x = if (m > 1) n else 1 (in test(Int, Int))
diff --git a/idea/testData/slicer/inflow/ifExpression.results.txt b/idea/testData/slicer/inflow/ifExpression.results.txt
index 6e02fda5090a3..127bcc7442cde 100644
--- a/idea/testData/slicer/inflow/ifExpression.results.txt
+++ b/idea/testData/slicer/inflow/ifExpression.results.txt
@@ -1,5 +1,5 @@
-4 val x = if (m > 1) n else 1
-4 val x = if (m > 1) n else 1
-4 val x = if (m > 1) n else 1
-3 fun test(m: Int, n: Int) {
-4 val x = if (m > 1) n else 1
+4 val x = if (m > 1) n else 1 (in test(Int, Int))
+4 val x = if (m > 1) n else 1 (in test(Int, Int))
+4 val x = if (m > 1) n else 1 (in test(Int, Int))
+3 fun test(m: Int, n: Int) { (in test(Int, Int))
+4 val x = if (m > 1) n else 1 (in test(Int, Int))
diff --git a/idea/testData/slicer/inflow/inlineExtensionImplicitReceiver.leafGroups.txt b/idea/testData/slicer/inflow/inlineExtensionImplicitReceiver.leafGroups.txt
index 9eb412f1de6b0..f21061f4859c5 100644
--- a/idea/testData/slicer/inflow/inlineExtensionImplicitReceiver.leafGroups.txt
+++ b/idea/testData/slicer/inflow/inlineExtensionImplicitReceiver.leafGroups.txt
@@ -1,8 +1,7 @@
4 class C
-12 fun C.extensionFun() {}
-7 [LAMBDA CALLS RECEIVER] val c = C().apply {
-LIB (INLINE CALL apply) [LAMBDA CALLS RECEIVER] public inline fun T.apply(block: T.() -> Unit): T {
-LIB (INLINE CALL apply) public inline fun T.apply(block: T.() -> Unit): T {
-7 val c = C().apply {
+12 fun C.extensionFun() {} (in extensionFun() on C)
+7 [LAMBDA CALLS RECEIVER] val c = C().apply { (in foo())
+LIB (INLINE CALL apply) [LAMBDA CALLS RECEIVER] public inline fun T.apply(block: T.() -> Unit): T { (in apply(T.() -> Unit) on T)
+LIB (INLINE CALL apply) public inline fun T.apply(block: T.() -> Unit): T { (in apply(T.() -> Unit) on T)
+7 val c = C().apply { (in foo())
4 class C
-
diff --git a/idea/testData/slicer/inflow/inlineExtensionImplicitReceiver.nullnessGroups.txt b/idea/testData/slicer/inflow/inlineExtensionImplicitReceiver.nullnessGroups.txt
index f70a5275444dd..dc491cce4e04d 100644
--- a/idea/testData/slicer/inflow/inlineExtensionImplicitReceiver.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/inlineExtensionImplicitReceiver.nullnessGroups.txt
@@ -1,8 +1,7 @@
[NotNull Values]
-7 val c = C().apply {
-12 fun C.extensionFun() {}
-7 [LAMBDA CALLS RECEIVER] val c = C().apply {
-LIB (INLINE CALL apply) [LAMBDA CALLS RECEIVER] public inline fun T.apply(block: T.() -> Unit): T {
-LIB (INLINE CALL apply) public inline fun T.apply(block: T.() -> Unit): T {
-7 val c = C().apply {
-
+7 val c = C().apply { (in foo())
+12 fun C.extensionFun() {} (in extensionFun() on C)
+7 [LAMBDA CALLS RECEIVER] val c = C().apply { (in foo())
+LIB (INLINE CALL apply) [LAMBDA CALLS RECEIVER] public inline fun T.apply(block: T.() -> Unit): T { (in apply(T.() -> Unit) on T)
+LIB (INLINE CALL apply) public inline fun T.apply(block: T.() -> Unit): T { (in apply(T.() -> Unit) on T)
+7 val c = C().apply { (in foo())
diff --git a/idea/testData/slicer/inflow/inlineExtensionImplicitReceiver.results.txt b/idea/testData/slicer/inflow/inlineExtensionImplicitReceiver.results.txt
index 55cfc2d7bbb40..6e2652b8f2014 100644
--- a/idea/testData/slicer/inflow/inlineExtensionImplicitReceiver.results.txt
+++ b/idea/testData/slicer/inflow/inlineExtensionImplicitReceiver.results.txt
@@ -1,6 +1,6 @@
-12 fun C.extensionFun() {}
-7 [LAMBDA CALLS RECEIVER] val c = C().apply {
-LIB (INLINE CALL apply) [LAMBDA CALLS RECEIVER] public inline fun T.apply(block: T.() -> Unit): T {
-LIB (INLINE CALL apply) public inline fun T.apply(block: T.() -> Unit): T {
-7 val c = C().apply {
+12 fun C.extensionFun() {} (in extensionFun() on C)
+7 [LAMBDA CALLS RECEIVER] val c = C().apply { (in foo())
+LIB (INLINE CALL apply) [LAMBDA CALLS RECEIVER] public inline fun T.apply(block: T.() -> Unit): T { (in apply(T.() -> Unit) on T)
+LIB (INLINE CALL apply) public inline fun T.apply(block: T.() -> Unit): T { (in apply(T.() -> Unit) on T)
+7 val c = C().apply { (in foo())
4 class C
diff --git a/idea/testData/slicer/inflow/inlineFunctionManyCalls.leafGroups.txt b/idea/testData/slicer/inflow/inlineFunctionManyCalls.leafGroups.txt
index 834abfd14e460..c859a4887a906 100644
--- a/idea/testData/slicer/inflow/inlineFunctionManyCalls.leafGroups.txt
+++ b/idea/testData/slicer/inflow/inlineFunctionManyCalls.leafGroups.txt
@@ -1,60 +1,59 @@
-36 "D".letNoInline {
-4 fun Any.extensionFun() {
-37 it.extensionFun()
-36 [LAMBDA CALLS ARGUMENT #0] "D".letNoInline {
-55 [LAMBDA CALLS ARGUMENT #0] fun T.letNoInline(block: (T) -> R): R {
-56 return block(this)
-55 fun T.letNoInline(block: (T) -> R): R {
-36 "D".letNoInline {
+36 "D".letNoInline { (in foo() on String)
+4 fun Any.extensionFun() { (in extensionFun() on Any)
+37 it.extensionFun() (in foo() on String)
+36 [LAMBDA CALLS ARGUMENT #0] "D".letNoInline { (in foo() on String)
+55 [LAMBDA CALLS ARGUMENT #0] fun T.letNoInline(block: (T) -> R): R { (in letNoInline((T) -> R) on T)
+56 return block(this) (in letNoInline((T) -> R) on T)
+55 fun T.letNoInline(block: (T) -> R): R { (in letNoInline((T) -> R) on T)
+36 "D".letNoInline { (in foo() on String)
-40 "C".letNoInline {
-4 fun Any.extensionFun() {
-37 it.extensionFun()
-36 [LAMBDA CALLS ARGUMENT #0] "D".letNoInline {
-55 [LAMBDA CALLS ARGUMENT #0] fun T.letNoInline(block: (T) -> R): R {
-56 return block(this)
-55 fun T.letNoInline(block: (T) -> R): R {
-40 "C".letNoInline {
+40 "C".letNoInline { (in foo() on String)
+4 fun Any.extensionFun() { (in extensionFun() on Any)
+37 it.extensionFun() (in foo() on String)
+36 [LAMBDA CALLS ARGUMENT #0] "D".letNoInline { (in foo() on String)
+55 [LAMBDA CALLS ARGUMENT #0] fun T.letNoInline(block: (T) -> R): R { (in letNoInline((T) -> R) on T)
+56 return block(this) (in letNoInline((T) -> R) on T)
+55 fun T.letNoInline(block: (T) -> R): R { (in letNoInline((T) -> R) on T)
+40 "C".letNoInline { (in foo() on String)
-28 "A".let {
-4 fun Any.extensionFun() {
-29 it.extensionFun()
-28 [LAMBDA CALLS ARGUMENT #0] "A".let {
-LIB (INLINE CALL let) [LAMBDA CALLS ARGUMENT #0] public inline fun T.let(block: (T) -> R): R {
-LIB (INLINE CALL let) return block(this)
-LIB (INLINE CALL let) public inline fun T.let(block: (T) -> R): R {
-28 "A".let {
+28 "A".let { (in foo() on String)
+4 fun Any.extensionFun() { (in extensionFun() on Any)
+29 it.extensionFun() (in foo() on String)
+28 [LAMBDA CALLS ARGUMENT #0] "A".let { (in foo() on String)
+LIB (INLINE CALL let) [LAMBDA CALLS ARGUMENT #0] public inline fun T.let(block: (T) -> R): R { (in let((T) -> R) on T)
+LIB (INLINE CALL let) return block(this) (in let((T) -> R) on T)
+LIB (INLINE CALL let) public inline fun T.let(block: (T) -> R): R { (in let((T) -> R) on T)
+28 "A".let { (in foo() on String)
-20 withNoInline(1) {
-4 fun Any.extensionFun() {
-20 [LAMBDA CALLS RECEIVER] withNoInline(1) {
-50 [LAMBDA CALLS RECEIVER] fun withNoInline(receiver: T, block: T.() -> R): R {
-51 val result = receiver.block()
-50 fun withNoInline(receiver: T, block: T.() -> R): R {
-20 withNoInline(1) {
+20 withNoInline(1) { (in foo() on String)
+4 fun Any.extensionFun() { (in extensionFun() on Any)
+20 [LAMBDA CALLS RECEIVER] withNoInline(1) { (in foo() on String)
+50 [LAMBDA CALLS RECEIVER] fun withNoInline(receiver: T, block: T.() -> R): R { (in withNoInline(T, T.() -> R))
+51 val result = receiver.block() (in withNoInline(T, T.() -> R))
+50 fun withNoInline(receiver: T, block: T.() -> R): R { (in withNoInline(T, T.() -> R))
+20 withNoInline(1) { (in foo() on String)
-8 with(123) {
-4 fun Any.extensionFun() {
-8 [LAMBDA CALLS RECEIVER] with(123) {
-45 (INLINE CALL with) [LAMBDA CALLS RECEIVER] inline fun with(receiver: T, block: T.() -> R): R {
-46 (INLINE CALL with) val result = receiver.block()
-45 (INLINE CALL with) inline fun with(receiver: T, block: T.() -> R): R {
-8 with(123) {
+8 with(123) { (in foo() on String)
+4 fun Any.extensionFun() { (in extensionFun() on Any)
+8 [LAMBDA CALLS RECEIVER] with(123) { (in foo() on String)
+45 (INLINE CALL with) [LAMBDA CALLS RECEIVER] inline fun with(receiver: T, block: T.() -> R): R { (in with(T, T.() -> R))
+46 (INLINE CALL with) val result = receiver.block() (in with(T, T.() -> R))
+45 (INLINE CALL with) inline fun with(receiver: T, block: T.() -> R): R { (in with(T, T.() -> R))
+8 with(123) { (in foo() on String)
-24 withNoInline(2) {
-4 fun Any.extensionFun() {
-20 [LAMBDA CALLS RECEIVER] withNoInline(1) {
-50 [LAMBDA CALLS RECEIVER] fun withNoInline(receiver: T, block: T.() -> R): R {
-51 val result = receiver.block()
-50 fun withNoInline(receiver: T, block: T.() -> R): R {
-24 withNoInline(2) {
-
-12 with(456) {
-4 fun Any.extensionFun() {
-13 this.extensionFun()
-12 [LAMBDA CALLS RECEIVER] with(456) {
-45 (INLINE CALL with) [LAMBDA CALLS RECEIVER] inline fun with(receiver: T, block: T.() -> R): R {
-46 (INLINE CALL with) val result = receiver.block()
-45 (INLINE CALL with) inline fun with(receiver: T, block: T.() -> R): R {
-12 with(456) {
+24 withNoInline(2) { (in foo() on String)
+4 fun Any.extensionFun() { (in extensionFun() on Any)
+20 [LAMBDA CALLS RECEIVER] withNoInline(1) { (in foo() on String)
+50 [LAMBDA CALLS RECEIVER] fun withNoInline(receiver: T, block: T.() -> R): R { (in withNoInline(T, T.() -> R))
+51 val result = receiver.block() (in withNoInline(T, T.() -> R))
+50 fun withNoInline(receiver: T, block: T.() -> R): R { (in withNoInline(T, T.() -> R))
+24 withNoInline(2) { (in foo() on String)
+12 with(456) { (in foo() on String)
+4 fun Any.extensionFun() { (in extensionFun() on Any)
+13 this.extensionFun() (in foo() on String)
+12 [LAMBDA CALLS RECEIVER] with(456) { (in foo() on String)
+45 (INLINE CALL with) [LAMBDA CALLS RECEIVER] inline fun with(receiver: T, block: T.() -> R): R { (in with(T, T.() -> R))
+46 (INLINE CALL with) val result = receiver.block() (in with(T, T.() -> R))
+45 (INLINE CALL with) inline fun with(receiver: T, block: T.() -> R): R { (in with(T, T.() -> R))
+12 with(456) { (in foo() on String)
diff --git a/idea/testData/slicer/inflow/inlineFunctionManyCalls.nullnessGroups.txt b/idea/testData/slicer/inflow/inlineFunctionManyCalls.nullnessGroups.txt
index b0019448f723b..018195420e08a 100644
--- a/idea/testData/slicer/inflow/inlineFunctionManyCalls.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/inlineFunctionManyCalls.nullnessGroups.txt
@@ -1,30 +1,29 @@
[NotNull Values]
-8 with(123) {
-4 fun Any.extensionFun() {
-8 [LAMBDA CALLS RECEIVER] with(123) {
-45 (INLINE CALL with) [LAMBDA CALLS RECEIVER] inline fun with(receiver: T, block: T.() -> R): R {
-46 (INLINE CALL with) val result = receiver.block()
-45 (INLINE CALL with) inline fun with(receiver: T, block: T.() -> R): R {
-8 with(123) {
-13 this.extensionFun()
-4 fun Any.extensionFun() {
-13 this.extensionFun()
-20 withNoInline(1) {
-4 fun Any.extensionFun() {
-20 [LAMBDA CALLS RECEIVER] withNoInline(1) {
-50 [LAMBDA CALLS RECEIVER] fun withNoInline(receiver: T, block: T.() -> R): R {
-51 val result = receiver.block()
-50 fun withNoInline(receiver: T, block: T.() -> R): R {
-20 withNoInline(1) {
-24 withNoInline(2) {
-4 fun Any.extensionFun() {
-20 [LAMBDA CALLS RECEIVER] withNoInline(1) {
-50 [LAMBDA CALLS RECEIVER] fun withNoInline(receiver: T, block: T.() -> R): R {
-51 val result = receiver.block()
-50 fun withNoInline(receiver: T, block: T.() -> R): R {
-24 withNoInline(2) {
-29 it.extensionFun()
-4 fun Any.extensionFun() {
-29 it.extensionFun()
-37 it.extensionFun()
-
+8 with(123) { (in foo() on String)
+4 fun Any.extensionFun() { (in extensionFun() on Any)
+8 [LAMBDA CALLS RECEIVER] with(123) { (in foo() on String)
+45 (INLINE CALL with) [LAMBDA CALLS RECEIVER] inline fun with(receiver: T, block: T.() -> R): R { (in with(T, T.() -> R))
+46 (INLINE CALL with) val result = receiver.block() (in with(T, T.() -> R))
+45 (INLINE CALL with) inline fun with(receiver: T, block: T.() -> R): R { (in with(T, T.() -> R))
+8 with(123) { (in foo() on String)
+13 this.extensionFun() (in foo() on String)
+4 fun Any.extensionFun() { (in extensionFun() on Any)
+13 this.extensionFun() (in foo() on String)
+20 withNoInline(1) { (in foo() on String)
+4 fun Any.extensionFun() { (in extensionFun() on Any)
+20 [LAMBDA CALLS RECEIVER] withNoInline(1) { (in foo() on String)
+50 [LAMBDA CALLS RECEIVER] fun withNoInline(receiver: T, block: T.() -> R): R { (in withNoInline(T, T.() -> R))
+51 val result = receiver.block() (in withNoInline(T, T.() -> R))
+50 fun withNoInline(receiver: T, block: T.() -> R): R { (in withNoInline(T, T.() -> R))
+20 withNoInline(1) { (in foo() on String)
+24 withNoInline(2) { (in foo() on String)
+4 fun Any.extensionFun() { (in extensionFun() on Any)
+20 [LAMBDA CALLS RECEIVER] withNoInline(1) { (in foo() on String)
+50 [LAMBDA CALLS RECEIVER] fun withNoInline(receiver: T, block: T.() -> R): R { (in withNoInline(T, T.() -> R))
+51 val result = receiver.block() (in withNoInline(T, T.() -> R))
+50 fun withNoInline(receiver: T, block: T.() -> R): R { (in withNoInline(T, T.() -> R))
+24 withNoInline(2) { (in foo() on String)
+29 it.extensionFun() (in foo() on String)
+4 fun Any.extensionFun() { (in extensionFun() on Any)
+29 it.extensionFun() (in foo() on String)
+37 it.extensionFun() (in foo() on String)
diff --git a/idea/testData/slicer/inflow/inlineFunctionManyCalls.results.txt b/idea/testData/slicer/inflow/inlineFunctionManyCalls.results.txt
index aabb51d35cc93..4f75dea1ddbf6 100644
--- a/idea/testData/slicer/inflow/inlineFunctionManyCalls.results.txt
+++ b/idea/testData/slicer/inflow/inlineFunctionManyCalls.results.txt
@@ -1,31 +1,31 @@
-4 fun Any.extensionFun() {
-8 [LAMBDA CALLS RECEIVER] with(123) {
-45 (INLINE CALL with) [LAMBDA CALLS RECEIVER] inline fun with(receiver: T, block: T.() -> R): R {
-46 (INLINE CALL with) val result = receiver.block()
-45 (INLINE CALL with) inline fun with(receiver: T, block: T.() -> R): R {
-8 with(123) {
-13 this.extensionFun()
-12 [LAMBDA CALLS RECEIVER] with(456) {
-45 (INLINE CALL with) [LAMBDA CALLS RECEIVER] inline fun with(receiver: T, block: T.() -> R): R {
-46 (INLINE CALL with) val result = receiver.block()
-45 (INLINE CALL with) inline fun with(receiver: T, block: T.() -> R): R {
-12 with(456) {
-20 [LAMBDA CALLS RECEIVER] withNoInline(1) {
-50 [LAMBDA CALLS RECEIVER] fun withNoInline(receiver: T, block: T.() -> R): R {
-51 val result = receiver.block()
-50 fun withNoInline(receiver: T, block: T.() -> R): R {
-20 withNoInline(1) {
-24 withNoInline(2) {
-29 it.extensionFun()
-28 [LAMBDA CALLS ARGUMENT #0] "A".let {
-LIB (INLINE CALL let) [LAMBDA CALLS ARGUMENT #0] public inline fun T.let(block: (T) -> R): R {
-LIB (INLINE CALL let) return block(this)
-LIB (INLINE CALL let) public inline fun T.let(block: (T) -> R): R {
-28 "A".let {
-37 it.extensionFun()
-36 [LAMBDA CALLS ARGUMENT #0] "D".letNoInline {
-55 [LAMBDA CALLS ARGUMENT #0] fun T.letNoInline(block: (T) -> R): R {
-56 return block(this)
-55 fun T.letNoInline(block: (T) -> R): R {
-36 "D".letNoInline {
-40 "C".letNoInline {
+4 fun Any.extensionFun() { (in extensionFun() on Any)
+8 [LAMBDA CALLS RECEIVER] with(123) { (in foo() on String)
+45 (INLINE CALL with) [LAMBDA CALLS RECEIVER] inline fun with(receiver: T, block: T.() -> R): R { (in with(T, T.() -> R))
+46 (INLINE CALL with) val result = receiver.block() (in with(T, T.() -> R))
+45 (INLINE CALL with) inline fun with(receiver: T, block: T.() -> R): R { (in with(T, T.() -> R))
+8 with(123) { (in foo() on String)
+13 this.extensionFun() (in foo() on String)
+12 [LAMBDA CALLS RECEIVER] with(456) { (in foo() on String)
+45 (INLINE CALL with) [LAMBDA CALLS RECEIVER] inline fun with(receiver: T, block: T.() -> R): R { (in with(T, T.() -> R))
+46 (INLINE CALL with) val result = receiver.block() (in with(T, T.() -> R))
+45 (INLINE CALL with) inline fun with(receiver: T, block: T.() -> R): R { (in with(T, T.() -> R))
+12 with(456) { (in foo() on String)
+20 [LAMBDA CALLS RECEIVER] withNoInline(1) { (in foo() on String)
+50 [LAMBDA CALLS RECEIVER] fun withNoInline(receiver: T, block: T.() -> R): R { (in withNoInline(T, T.() -> R))
+51 val result = receiver.block() (in withNoInline(T, T.() -> R))
+50 fun withNoInline(receiver: T, block: T.() -> R): R { (in withNoInline(T, T.() -> R))
+20 withNoInline(1) { (in foo() on String)
+24 withNoInline(2) { (in foo() on String)
+29 it.extensionFun() (in foo() on String)
+28 [LAMBDA CALLS ARGUMENT #0] "A".let { (in foo() on String)
+LIB (INLINE CALL let) [LAMBDA CALLS ARGUMENT #0] public inline fun T.let(block: (T) -> R): R { (in let((T) -> R) on T)
+LIB (INLINE CALL let) return block(this) (in let((T) -> R) on T)
+LIB (INLINE CALL let) public inline fun T.let(block: (T) -> R): R { (in let((T) -> R) on T)
+28 "A".let { (in foo() on String)
+37 it.extensionFun() (in foo() on String)
+36 [LAMBDA CALLS ARGUMENT #0] "D".letNoInline { (in foo() on String)
+55 [LAMBDA CALLS ARGUMENT #0] fun T.letNoInline(block: (T) -> R): R { (in letNoInline((T) -> R) on T)
+56 return block(this) (in letNoInline((T) -> R) on T)
+55 fun T.letNoInline(block: (T) -> R): R { (in letNoInline((T) -> R) on T)
+36 "D".letNoInline { (in foo() on String)
+40 "C".letNoInline { (in foo() on String)
diff --git a/idea/testData/slicer/inflow/lambdaImplicitParameter.leafGroups.txt b/idea/testData/slicer/inflow/lambdaImplicitParameter.leafGroups.txt
index 5cbea6bf2fe13..a16f704ac551b 100644
--- a/idea/testData/slicer/inflow/lambdaImplicitParameter.leafGroups.txt
+++ b/idea/testData/slicer/inflow/lambdaImplicitParameter.leafGroups.txt
@@ -1,6 +1,5 @@
-4 f(1)
-9 val v = it
-8 [LAMBDA CALLS ARGUMENT #0] foo {
-3 [LAMBDA CALLS ARGUMENT #0] fun foo(f: (Int) -> Unit) {
-4 f(1)
-
+4 f(1) (in foo((Int) -> Unit))
+9 val v = it (in test())
+8 [LAMBDA CALLS ARGUMENT #0] foo { (in test())
+3 [LAMBDA CALLS ARGUMENT #0] fun foo(f: (Int) -> Unit) { (in foo((Int) -> Unit))
+4 f(1) (in foo((Int) -> Unit))
diff --git a/idea/testData/slicer/inflow/lambdaImplicitParameter.nullnessGroups.txt b/idea/testData/slicer/inflow/lambdaImplicitParameter.nullnessGroups.txt
index ee2f622c20181..9ef6fed319b76 100644
--- a/idea/testData/slicer/inflow/lambdaImplicitParameter.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/lambdaImplicitParameter.nullnessGroups.txt
@@ -1,4 +1,3 @@
[NotNull Values]
-9 val v = it
-9 val v = it
-
+9 val v = it (in test())
+9 val v = it (in test())
diff --git a/idea/testData/slicer/inflow/lambdaImplicitParameter.results.txt b/idea/testData/slicer/inflow/lambdaImplicitParameter.results.txt
index 4a221edec8582..297bab6da259e 100644
--- a/idea/testData/slicer/inflow/lambdaImplicitParameter.results.txt
+++ b/idea/testData/slicer/inflow/lambdaImplicitParameter.results.txt
@@ -1,4 +1,4 @@
-9 val v = it
-8 [LAMBDA CALLS ARGUMENT #0] foo {
-3 [LAMBDA CALLS ARGUMENT #0] fun foo(f: (Int) -> Unit) {
-4 f(1)
+9 val v = it (in test())
+8 [LAMBDA CALLS ARGUMENT #0] foo { (in test())
+3 [LAMBDA CALLS ARGUMENT #0] fun foo(f: (Int) -> Unit) { (in foo((Int) -> Unit))
+4 f(1) (in foo((Int) -> Unit))
diff --git a/idea/testData/slicer/inflow/lambdaParameter.leafGroups.txt b/idea/testData/slicer/inflow/lambdaParameter.leafGroups.txt
index bcfb66420fa25..5086bd0629a47 100644
--- a/idea/testData/slicer/inflow/lambdaParameter.leafGroups.txt
+++ b/idea/testData/slicer/inflow/lambdaParameter.leafGroups.txt
@@ -1,7 +1,6 @@
-4 f(1)
-9 val v = value
-8 foo { value ->
-8 [LAMBDA CALLS ARGUMENT #0] foo { value ->
-3 [LAMBDA CALLS ARGUMENT #0] fun foo(f: (Int) -> Unit) {
-4 f(1)
-
+4 f(1) (in foo((Int) -> Unit))
+9 val v = value (in test())
+8 foo { value -> (in test())
+8 [LAMBDA CALLS ARGUMENT #0] foo { value -> (in test())
+3 [LAMBDA CALLS ARGUMENT #0] fun foo(f: (Int) -> Unit) { (in foo((Int) -> Unit))
+4 f(1) (in foo((Int) -> Unit))
diff --git a/idea/testData/slicer/inflow/lambdaParameter.nullnessGroups.txt b/idea/testData/slicer/inflow/lambdaParameter.nullnessGroups.txt
index 5eb3a447c8dd3..c32ffd0cd5181 100644
--- a/idea/testData/slicer/inflow/lambdaParameter.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/lambdaParameter.nullnessGroups.txt
@@ -1,4 +1,3 @@
[NotNull Values]
-9 val v = value
-9 val v = value
-
+9 val v = value (in test())
+9 val v = value (in test())
diff --git a/idea/testData/slicer/inflow/lambdaParameter.results.txt b/idea/testData/slicer/inflow/lambdaParameter.results.txt
index c723b61100074..43ebe2b2e0191 100644
--- a/idea/testData/slicer/inflow/lambdaParameter.results.txt
+++ b/idea/testData/slicer/inflow/lambdaParameter.results.txt
@@ -1,5 +1,5 @@
-9 val v = value
-8 foo { value ->
-8 [LAMBDA CALLS ARGUMENT #0] foo { value ->
-3 [LAMBDA CALLS ARGUMENT #0] fun foo(f: (Int) -> Unit) {
-4 f(1)
+9 val v = value (in test())
+8 foo { value -> (in test())
+8 [LAMBDA CALLS ARGUMENT #0] foo { value -> (in test())
+3 [LAMBDA CALLS ARGUMENT #0] fun foo(f: (Int) -> Unit) { (in foo((Int) -> Unit))
+4 f(1) (in foo((Int) -> Unit))
diff --git a/idea/testData/slicer/inflow/lambdaResult.leafGroups.txt b/idea/testData/slicer/inflow/lambdaResult.leafGroups.txt
index b67a6270b0f0c..cd6dccb147f07 100644
--- a/idea/testData/slicer/inflow/lambdaResult.leafGroups.txt
+++ b/idea/testData/slicer/inflow/lambdaResult.leafGroups.txt
@@ -1,14 +1,13 @@
-4 return f(1)
-8 val x = foo { it }
-8 val x = foo { it }
+4 return f(1) (in foo((Int) -> Int))
+8 val x = foo { it } (in test())
+8 val x = foo { it } (in test())
3 fun foo(f: (Int) -> Int): Int {
-4 return f(1)
-4 [LAMBDA IN] return f(1)
-3 [LAMBDA IN] fun foo(f: (Int) -> Int): Int {
-8 [LAMBDA IN] val x = foo { it }
-8 val x = foo { it }
-8 val x = foo { it }
-8 [LAMBDA CALLS ARGUMENT #0] val x = foo { it }
-3 [LAMBDA CALLS ARGUMENT #0] fun foo(f: (Int) -> Int): Int {
-4 return f(1)
-
+4 return f(1) (in foo((Int) -> Int))
+4 [LAMBDA IN] return f(1) (in foo((Int) -> Int))
+3 [LAMBDA IN] fun foo(f: (Int) -> Int): Int { (in foo((Int) -> Int))
+8 [LAMBDA IN] val x = foo { it } (in test())
+8 val x = foo { it } (in test())
+8 val x = foo { it } (in test())
+8 [LAMBDA CALLS ARGUMENT #0] val x = foo { it } (in test())
+3 [LAMBDA CALLS ARGUMENT #0] fun foo(f: (Int) -> Int): Int { (in foo((Int) -> Int))
+4 return f(1) (in foo((Int) -> Int))
diff --git a/idea/testData/slicer/inflow/lambdaResult.nullnessGroups.txt b/idea/testData/slicer/inflow/lambdaResult.nullnessGroups.txt
index 3f515c9936060..28380952d79d3 100644
--- a/idea/testData/slicer/inflow/lambdaResult.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/lambdaResult.nullnessGroups.txt
@@ -1,3 +1,3 @@
[NotNull Values]
-8 val x = foo { it }
-8 val x = foo { it }
+8 val x = foo { it } (in test())
+8 val x = foo { it } (in test())
diff --git a/idea/testData/slicer/inflow/lambdaResult.results.txt b/idea/testData/slicer/inflow/lambdaResult.results.txt
index 046eb0a9e72a3..154a0a9679f9c 100644
--- a/idea/testData/slicer/inflow/lambdaResult.results.txt
+++ b/idea/testData/slicer/inflow/lambdaResult.results.txt
@@ -1,12 +1,12 @@
-8 val x = foo { it }
-8 val x = foo { it }
+8 val x = foo { it } (in test())
+8 val x = foo { it } (in test())
3 fun foo(f: (Int) -> Int): Int {
-4 return f(1)
-4 [LAMBDA IN] return f(1)
-3 [LAMBDA IN] fun foo(f: (Int) -> Int): Int {
-8 [LAMBDA IN] val x = foo { it }
-8 val x = foo { it }
-8 val x = foo { it }
-8 [LAMBDA CALLS ARGUMENT #0] val x = foo { it }
-3 [LAMBDA CALLS ARGUMENT #0] fun foo(f: (Int) -> Int): Int {
-4 return f(1)
+4 return f(1) (in foo((Int) -> Int))
+4 [LAMBDA IN] return f(1) (in foo((Int) -> Int))
+3 [LAMBDA IN] fun foo(f: (Int) -> Int): Int { (in foo((Int) -> Int))
+8 [LAMBDA IN] val x = foo { it } (in test())
+8 val x = foo { it } (in test())
+8 val x = foo { it } (in test())
+8 [LAMBDA CALLS ARGUMENT #0] val x = foo { it } (in test())
+3 [LAMBDA CALLS ARGUMENT #0] fun foo(f: (Int) -> Int): Int { (in foo((Int) -> Int))
+4 return f(1) (in foo((Int) -> Int))
diff --git a/idea/testData/slicer/inflow/lambdaResultWithAssignments.leafGroups.txt b/idea/testData/slicer/inflow/lambdaResultWithAssignments.leafGroups.txt
index f44f1998b007e..767fd5e14f9ff 100644
--- a/idea/testData/slicer/inflow/lambdaResultWithAssignments.leafGroups.txt
+++ b/idea/testData/slicer/inflow/lambdaResultWithAssignments.leafGroups.txt
@@ -1,18 +1,17 @@
-5 return x(1)
-9 val y = foo { it }
-9 val y = foo { it }
+5 return x(1) (in foo((Int) -> Int))
+9 val y = foo { it } (in test())
+9 val y = foo { it } (in test())
3 fun foo(f: (Int) -> Int): Int {
-5 return x(1)
-5 [LAMBDA IN] return x(1)
-4 [LAMBDA IN] val x = f
-4 [LAMBDA IN] val x = f
-3 [LAMBDA IN] fun foo(f: (Int) -> Int): Int {
-9 [LAMBDA IN] val y = foo { it }
-9 val y = foo { it }
-9 val y = foo { it }
-9 [LAMBDA CALLS ARGUMENT #0] val y = foo { it }
-3 [LAMBDA CALLS ARGUMENT #0] fun foo(f: (Int) -> Int): Int {
-4 [LAMBDA CALLS ARGUMENT #0] val x = f
-4 [LAMBDA CALLS ARGUMENT #0] val x = f
-5 return x(1)
-
+5 return x(1) (in foo((Int) -> Int))
+5 [LAMBDA IN] return x(1) (in foo((Int) -> Int))
+4 [LAMBDA IN] val x = f (in foo((Int) -> Int))
+4 [LAMBDA IN] val x = f (in foo((Int) -> Int))
+3 [LAMBDA IN] fun foo(f: (Int) -> Int): Int { (in foo((Int) -> Int))
+9 [LAMBDA IN] val y = foo { it } (in test())
+9 val y = foo { it } (in test())
+9 val y = foo { it } (in test())
+9 [LAMBDA CALLS ARGUMENT #0] val y = foo { it } (in test())
+3 [LAMBDA CALLS ARGUMENT #0] fun foo(f: (Int) -> Int): Int { (in foo((Int) -> Int))
+4 [LAMBDA CALLS ARGUMENT #0] val x = f (in foo((Int) -> Int))
+4 [LAMBDA CALLS ARGUMENT #0] val x = f (in foo((Int) -> Int))
+5 return x(1) (in foo((Int) -> Int))
diff --git a/idea/testData/slicer/inflow/lambdaResultWithAssignments.nullnessGroups.txt b/idea/testData/slicer/inflow/lambdaResultWithAssignments.nullnessGroups.txt
index 01e17527b94ea..3c6eec2fea5de 100644
--- a/idea/testData/slicer/inflow/lambdaResultWithAssignments.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/lambdaResultWithAssignments.nullnessGroups.txt
@@ -1,3 +1,3 @@
[NotNull Values]
-9 val y = foo { it }
-9 val y = foo { it }
+9 val y = foo { it } (in test())
+9 val y = foo { it } (in test())
diff --git a/idea/testData/slicer/inflow/lambdaResultWithAssignments.results.txt b/idea/testData/slicer/inflow/lambdaResultWithAssignments.results.txt
index 97b168d237843..4e32eb2239df7 100644
--- a/idea/testData/slicer/inflow/lambdaResultWithAssignments.results.txt
+++ b/idea/testData/slicer/inflow/lambdaResultWithAssignments.results.txt
@@ -1,16 +1,16 @@
-9 val y = foo { it }
-9 val y = foo { it }
+9 val y = foo { it } (in test())
+9 val y = foo { it } (in test())
3 fun foo(f: (Int) -> Int): Int {
-5 return x(1)
-5 [LAMBDA IN] return x(1)
-4 [LAMBDA IN] val x = f
-4 [LAMBDA IN] val x = f
-3 [LAMBDA IN] fun foo(f: (Int) -> Int): Int {
-9 [LAMBDA IN] val y = foo { it }
-9 val y = foo { it }
-9 val y = foo { it }
-9 [LAMBDA CALLS ARGUMENT #0] val y = foo { it }
-3 [LAMBDA CALLS ARGUMENT #0] fun foo(f: (Int) -> Int): Int {
-4 [LAMBDA CALLS ARGUMENT #0] val x = f
-4 [LAMBDA CALLS ARGUMENT #0] val x = f
-5 return x(1)
+5 return x(1) (in foo((Int) -> Int))
+5 [LAMBDA IN] return x(1) (in foo((Int) -> Int))
+4 [LAMBDA IN] val x = f (in foo((Int) -> Int))
+4 [LAMBDA IN] val x = f (in foo((Int) -> Int))
+3 [LAMBDA IN] fun foo(f: (Int) -> Int): Int { (in foo((Int) -> Int))
+9 [LAMBDA IN] val y = foo { it } (in test())
+9 val y = foo { it } (in test())
+9 val y = foo { it } (in test())
+9 [LAMBDA CALLS ARGUMENT #0] val y = foo { it } (in test())
+3 [LAMBDA CALLS ARGUMENT #0] fun foo(f: (Int) -> Int): Int { (in foo((Int) -> Int))
+4 [LAMBDA CALLS ARGUMENT #0] val x = f (in foo((Int) -> Int))
+4 [LAMBDA CALLS ARGUMENT #0] val x = f (in foo((Int) -> Int))
+5 return x(1) (in foo((Int) -> Int))
diff --git a/idea/testData/slicer/inflow/lambdaResultWithDirectCall.leafGroups.txt b/idea/testData/slicer/inflow/lambdaResultWithDirectCall.leafGroups.txt
index e5249b417968d..8848d2633d70e 100644
--- a/idea/testData/slicer/inflow/lambdaResultWithDirectCall.leafGroups.txt
+++ b/idea/testData/slicer/inflow/lambdaResultWithDirectCall.leafGroups.txt
@@ -1,7 +1,6 @@
-4 val x = { 1 }()
-4 val x = { 1 }()
-4 val x = { 1 }()
-4 [LAMBDA IN] val x = { 1 }()
-4 val x = { 1 }()
-4 val x = { 1 }()
-
+4 val x = { 1 }() (in test())
+4 val x = { 1 }() (in test())
+4 val x = { 1 }() (in test())
+4 [LAMBDA IN] val x = { 1 }() (in test())
+4 val x = { 1 }() (in test())
+4 val x = { 1 }() (in test())
diff --git a/idea/testData/slicer/inflow/lambdaResultWithDirectCall.nullnessGroups.txt b/idea/testData/slicer/inflow/lambdaResultWithDirectCall.nullnessGroups.txt
index cf4cf72dbda84..6f288f0507ca7 100644
--- a/idea/testData/slicer/inflow/lambdaResultWithDirectCall.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/lambdaResultWithDirectCall.nullnessGroups.txt
@@ -1,3 +1,3 @@
[NotNull Values]
-4 val x = { 1 }()
-4 val x = { 1 }()
+4 val x = { 1 }() (in test())
+4 val x = { 1 }() (in test())
diff --git a/idea/testData/slicer/inflow/lambdaResultWithDirectCall.results.txt b/idea/testData/slicer/inflow/lambdaResultWithDirectCall.results.txt
index 175d038bc3518..0b655473f3196 100644
--- a/idea/testData/slicer/inflow/lambdaResultWithDirectCall.results.txt
+++ b/idea/testData/slicer/inflow/lambdaResultWithDirectCall.results.txt
@@ -1,5 +1,5 @@
-4 val x = { 1 }()
-4 val x = { 1 }()
-4 [LAMBDA IN] val x = { 1 }()
-4 val x = { 1 }()
-4 val x = { 1 }()
+4 val x = { 1 }() (in test())
+4 val x = { 1 }() (in test())
+4 [LAMBDA IN] val x = { 1 }() (in test())
+4 val x = { 1 }() (in test())
+4 val x = { 1 }() (in test())
diff --git a/idea/testData/slicer/inflow/lambdaResultWithDirectCallViaAssignment.leafGroups.txt b/idea/testData/slicer/inflow/lambdaResultWithDirectCallViaAssignment.leafGroups.txt
index d423c0c025de5..97caa26cbe6eb 100644
--- a/idea/testData/slicer/inflow/lambdaResultWithDirectCallViaAssignment.leafGroups.txt
+++ b/idea/testData/slicer/inflow/lambdaResultWithDirectCallViaAssignment.leafGroups.txt
@@ -1,9 +1,8 @@
-4 val f = { 1 }
-5 val x = f()
-5 val x = f()
-5 [LAMBDA IN] val x = f()
-4 [LAMBDA IN] val f = { 1 }
-4 [LAMBDA IN] val f = { 1 }
-4 val f = { 1 }
-4 val f = { 1 }
-
+4 val f = { 1 } (in test())
+5 val x = f() (in test())
+5 val x = f() (in test())
+5 [LAMBDA IN] val x = f() (in test())
+4 [LAMBDA IN] val f = { 1 } (in test())
+4 [LAMBDA IN] val f = { 1 } (in test())
+4 val f = { 1 } (in test())
+4 val f = { 1 } (in test())
diff --git a/idea/testData/slicer/inflow/lambdaResultWithDirectCallViaAssignment.nullnessGroups.txt b/idea/testData/slicer/inflow/lambdaResultWithDirectCallViaAssignment.nullnessGroups.txt
index 617998f70716a..6c58bad92cbcd 100644
--- a/idea/testData/slicer/inflow/lambdaResultWithDirectCallViaAssignment.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/lambdaResultWithDirectCallViaAssignment.nullnessGroups.txt
@@ -1,3 +1,3 @@
[NotNull Values]
-5 val x = f()
-5 val x = f()
+5 val x = f() (in test())
+5 val x = f() (in test())
diff --git a/idea/testData/slicer/inflow/lambdaResultWithDirectCallViaAssignment.results.txt b/idea/testData/slicer/inflow/lambdaResultWithDirectCallViaAssignment.results.txt
index 8faa41aa96eb8..92e5f85d9b2af 100644
--- a/idea/testData/slicer/inflow/lambdaResultWithDirectCallViaAssignment.results.txt
+++ b/idea/testData/slicer/inflow/lambdaResultWithDirectCallViaAssignment.results.txt
@@ -1,7 +1,7 @@
-5 val x = f()
-5 val x = f()
-5 [LAMBDA IN] val x = f()
-4 [LAMBDA IN] val f = { 1 }
-4 [LAMBDA IN] val f = { 1 }
-4 val f = { 1 }
-4 val f = { 1 }
+5 val x = f() (in test())
+5 val x = f() (in test())
+5 [LAMBDA IN] val x = f() (in test())
+4 [LAMBDA IN] val f = { 1 } (in test())
+4 [LAMBDA IN] val f = { 1 } (in test())
+4 val f = { 1 } (in test())
+4 val f = { 1 } (in test())
diff --git a/idea/testData/slicer/inflow/localVal.leafGroups.txt b/idea/testData/slicer/inflow/localVal.leafGroups.txt
index b73b7e0a97403..5c40616c18558 100644
--- a/idea/testData/slicer/inflow/localVal.leafGroups.txt
+++ b/idea/testData/slicer/inflow/localVal.leafGroups.txt
@@ -1,5 +1,4 @@
-3 fun test(n: Int) {
-4 val x = n
-4 val x = n
-3 fun test(n: Int) {
-
+3 fun test(n: Int) { (in test(Int))
+4 val x = n (in test(Int))
+4 val x = n (in test(Int))
+3 fun test(n: Int) { (in test(Int))
diff --git a/idea/testData/slicer/inflow/localVal.nullnessGroups.txt b/idea/testData/slicer/inflow/localVal.nullnessGroups.txt
index 317d74197e7d8..0156efe16b2a9 100644
--- a/idea/testData/slicer/inflow/localVal.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/localVal.nullnessGroups.txt
@@ -1,3 +1,3 @@
[NotNull Values]
-4 val x = n
-4 val x = n
+4 val x = n (in test(Int))
+4 val x = n (in test(Int))
diff --git a/idea/testData/slicer/inflow/localVal.results.txt b/idea/testData/slicer/inflow/localVal.results.txt
index 2dce24565b7e5..78be4674a963f 100644
--- a/idea/testData/slicer/inflow/localVal.results.txt
+++ b/idea/testData/slicer/inflow/localVal.results.txt
@@ -1,3 +1,3 @@
-4 val x = n
-4 val x = n
-3 fun test(n: Int) {
+4 val x = n (in test(Int))
+4 val x = n (in test(Int))
+3 fun test(n: Int) { (in test(Int))
diff --git a/idea/testData/slicer/inflow/localVar.leafGroups.txt b/idea/testData/slicer/inflow/localVar.leafGroups.txt
index 3161578aec942..ce86daf12e7d2 100644
--- a/idea/testData/slicer/inflow/localVar.leafGroups.txt
+++ b/idea/testData/slicer/inflow/localVar.leafGroups.txt
@@ -1,9 +1,8 @@
-3 fun test(n: Int) {
-4 var x = n
-4 var x = n
-3 fun test(n: Int) {
-
-6 x = 0
-4 var x = n
-6 x = 0
+3 fun test(n: Int) { (in test(Int))
+4 var x = n (in test(Int))
+4 var x = n (in test(Int))
+3 fun test(n: Int) { (in test(Int))
+6 x = 0 (in test(Int))
+4 var x = n (in test(Int))
+6 x = 0 (in test(Int))
diff --git a/idea/testData/slicer/inflow/localVar.nullnessGroups.txt b/idea/testData/slicer/inflow/localVar.nullnessGroups.txt
index eedeaacafd984..62eb0cd3d4dfb 100644
--- a/idea/testData/slicer/inflow/localVar.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/localVar.nullnessGroups.txt
@@ -1,3 +1,3 @@
[NotNull Values]
-4 var x = n
-4 var x = n
+4 var x = n (in test(Int))
+4 var x = n (in test(Int))
diff --git a/idea/testData/slicer/inflow/localVar.results.txt b/idea/testData/slicer/inflow/localVar.results.txt
index cd93cf5884fec..6035a8f327349 100644
--- a/idea/testData/slicer/inflow/localVar.results.txt
+++ b/idea/testData/slicer/inflow/localVar.results.txt
@@ -1,4 +1,4 @@
-4 var x = n
-4 var x = n
-3 fun test(n: Int) {
-6 x = 0
+4 var x = n (in test(Int))
+4 var x = n (in test(Int))
+3 fun test(n: Int) { (in test(Int))
+6 x = 0 (in test(Int))
diff --git a/idea/testData/slicer/inflow/memberValWithInitializer.leafGroups.txt b/idea/testData/slicer/inflow/memberValWithInitializer.leafGroups.txt
index 4842215e6b359..ff3fe78aef5cd 100644
--- a/idea/testData/slicer/inflow/memberValWithInitializer.leafGroups.txt
+++ b/idea/testData/slicer/inflow/memberValWithInitializer.leafGroups.txt
@@ -1,4 +1,3 @@
-4 val x: Int = 1
-4 val x: Int = 1
-4 val x: Int = 1
-
+4 val x: Int = 1 (in A.x: Int)
+4 val x: Int = 1 (in A)
+4 val x: Int = 1 (in A.x: Int)
diff --git a/idea/testData/slicer/inflow/memberValWithInitializer.nullnessGroups.txt b/idea/testData/slicer/inflow/memberValWithInitializer.nullnessGroups.txt
index 97a1f3ea0eee1..65c7691f6ff3c 100644
--- a/idea/testData/slicer/inflow/memberValWithInitializer.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/memberValWithInitializer.nullnessGroups.txt
@@ -1,3 +1,3 @@
[NotNull Values]
-4 val x: Int = 1
-4 val x: Int = 1
+4 val x: Int = 1 (in A)
+4 val x: Int = 1 (in A)
diff --git a/idea/testData/slicer/inflow/memberValWithInitializer.results.txt b/idea/testData/slicer/inflow/memberValWithInitializer.results.txt
index 2a3db0d25790c..2159189f31273 100644
--- a/idea/testData/slicer/inflow/memberValWithInitializer.results.txt
+++ b/idea/testData/slicer/inflow/memberValWithInitializer.results.txt
@@ -1,2 +1,2 @@
-4 val x: Int = 1
-4 val x: Int = 1
+4 val x: Int = 1 (in A)
+4 val x: Int = 1 (in A.x: Int)
diff --git a/idea/testData/slicer/inflow/memberValWithSplitInitializer.leafGroups.txt b/idea/testData/slicer/inflow/memberValWithSplitInitializer.leafGroups.txt
index 04a87251bb6c2..5796746c27cd8 100644
--- a/idea/testData/slicer/inflow/memberValWithSplitInitializer.leafGroups.txt
+++ b/idea/testData/slicer/inflow/memberValWithSplitInitializer.leafGroups.txt
@@ -1,4 +1,3 @@
-7 x = 1
-4 val x: Int
-7 x = 1
-
+7 x = 1 (in A)
+4 val x: Int (in A)
+7 x = 1 (in A)
diff --git a/idea/testData/slicer/inflow/memberValWithSplitInitializer.nullnessGroups.txt b/idea/testData/slicer/inflow/memberValWithSplitInitializer.nullnessGroups.txt
index bfd2028d63fa9..0816722dc07ce 100644
--- a/idea/testData/slicer/inflow/memberValWithSplitInitializer.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/memberValWithSplitInitializer.nullnessGroups.txt
@@ -1,3 +1,3 @@
[NotNull Values]
-4 val x: Int
-4 val x: Int
+4 val x: Int (in A)
+4 val x: Int (in A)
diff --git a/idea/testData/slicer/inflow/memberValWithSplitInitializer.results.txt b/idea/testData/slicer/inflow/memberValWithSplitInitializer.results.txt
index d479a4d425d06..5e6f0ed2893cb 100644
--- a/idea/testData/slicer/inflow/memberValWithSplitInitializer.results.txt
+++ b/idea/testData/slicer/inflow/memberValWithSplitInitializer.results.txt
@@ -1,2 +1,2 @@
-4 val x: Int
-7 x = 1
+4 val x: Int (in A)
+7 x = 1 (in A)
diff --git a/idea/testData/slicer/inflow/memberVarWithInitializer.leafGroups.txt b/idea/testData/slicer/inflow/memberVarWithInitializer.leafGroups.txt
index 4b58ad03385c4..216d7631413c8 100644
--- a/idea/testData/slicer/inflow/memberVarWithInitializer.leafGroups.txt
+++ b/idea/testData/slicer/inflow/memberVarWithInitializer.leafGroups.txt
@@ -1,8 +1,7 @@
-4 var x: Int = 1
-4 var x: Int = 1
-4 var x: Int = 1
-
-9 x = 2
-4 var x: Int = 1
-9 x = 2
+4 var x: Int = 1 (in A.x: Int)
+4 var x: Int = 1 (in A)
+4 var x: Int = 1 (in A.x: Int)
+9 x = 2 (in A.test())
+4 var x: Int = 1 (in A)
+9 x = 2 (in A.test())
diff --git a/idea/testData/slicer/inflow/memberVarWithInitializer.nullnessGroups.txt b/idea/testData/slicer/inflow/memberVarWithInitializer.nullnessGroups.txt
index 3ca6c06eb06f5..9c54662d948f0 100644
--- a/idea/testData/slicer/inflow/memberVarWithInitializer.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/memberVarWithInitializer.nullnessGroups.txt
@@ -1,3 +1,3 @@
[NotNull Values]
-4 var x: Int = 1
-4 var x: Int = 1
+4 var x: Int = 1 (in A)
+4 var x: Int = 1 (in A)
diff --git a/idea/testData/slicer/inflow/memberVarWithInitializer.results.txt b/idea/testData/slicer/inflow/memberVarWithInitializer.results.txt
index 00109f3bc0be8..c703b32206755 100644
--- a/idea/testData/slicer/inflow/memberVarWithInitializer.results.txt
+++ b/idea/testData/slicer/inflow/memberVarWithInitializer.results.txt
@@ -1,3 +1,3 @@
-4 var x: Int = 1
-4 var x: Int = 1
-9 x = 2
+4 var x: Int = 1 (in A)
+4 var x: Int = 1 (in A.x: Int)
+9 x = 2 (in A.test())
diff --git a/idea/testData/slicer/inflow/memberVarWithSplitInitializer.leafGroups.txt b/idea/testData/slicer/inflow/memberVarWithSplitInitializer.leafGroups.txt
index a0cc659b54230..5d8334e3d9c16 100644
--- a/idea/testData/slicer/inflow/memberVarWithSplitInitializer.leafGroups.txt
+++ b/idea/testData/slicer/inflow/memberVarWithSplitInitializer.leafGroups.txt
@@ -1,8 +1,7 @@
-7 x = 1
-4 var x: Int
-7 x = 1
-
-14 x = 2
-4 var x: Int
-14 x = 2
+7 x = 1 (in A)
+4 var x: Int (in A)
+7 x = 1 (in A)
+14 x = 2 (in A.test())
+4 var x: Int (in A)
+14 x = 2 (in A.test())
diff --git a/idea/testData/slicer/inflow/memberVarWithSplitInitializer.nullnessGroups.txt b/idea/testData/slicer/inflow/memberVarWithSplitInitializer.nullnessGroups.txt
index 93846fb0e6332..21daad131849a 100644
--- a/idea/testData/slicer/inflow/memberVarWithSplitInitializer.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/memberVarWithSplitInitializer.nullnessGroups.txt
@@ -1,3 +1,3 @@
[NotNull Values]
-4 var x: Int
-4 var x: Int
+4 var x: Int (in A)
+4 var x: Int (in A)
diff --git a/idea/testData/slicer/inflow/memberVarWithSplitInitializer.results.txt b/idea/testData/slicer/inflow/memberVarWithSplitInitializer.results.txt
index 623b3cd12308f..b256dc29f21d5 100644
--- a/idea/testData/slicer/inflow/memberVarWithSplitInitializer.results.txt
+++ b/idea/testData/slicer/inflow/memberVarWithSplitInitializer.results.txt
@@ -1,3 +1,3 @@
-4 var x: Int
-7 x = 1
-14 x = 2
+4 var x: Int (in A)
+7 x = 1 (in A)
+14 x = 2 (in A.test())
diff --git a/idea/testData/slicer/inflow/noFieldInGetter.leafGroups.txt b/idea/testData/slicer/inflow/noFieldInGetter.leafGroups.txt
index d741c4706ad13..91e228440d270 100644
--- a/idea/testData/slicer/inflow/noFieldInGetter.leafGroups.txt
+++ b/idea/testData/slicer/inflow/noFieldInGetter.leafGroups.txt
@@ -1,10 +1,9 @@
-4 var foo: Int = 0
-11 val x = foo
-4 var foo: Int = 0
-4 var foo: Int = 0
-
-5 get() = 1
-11 val x = foo
-4 var foo: Int = 0
-5 get() = 1
+4 var foo: Int = 0 (in A.foo: Int)
+11 val x = foo (in A.test())
+4 var foo: Int = 0 (in A)
+4 var foo: Int = 0 (in A.foo: Int)
+5 get() = 1 (in A.foo: Int)
+11 val x = foo (in A.test())
+4 var foo: Int = 0 (in A)
+5 get() = 1 (in A.foo: Int)
diff --git a/idea/testData/slicer/inflow/noFieldInGetter.nullnessGroups.txt b/idea/testData/slicer/inflow/noFieldInGetter.nullnessGroups.txt
index 20caa224a234c..94793893a4aa1 100644
--- a/idea/testData/slicer/inflow/noFieldInGetter.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/noFieldInGetter.nullnessGroups.txt
@@ -1,3 +1,3 @@
[NotNull Values]
-11 val x = foo
-11 val x = foo
+11 val x = foo (in A.test())
+11 val x = foo (in A.test())
diff --git a/idea/testData/slicer/inflow/noFieldInGetter.results.txt b/idea/testData/slicer/inflow/noFieldInGetter.results.txt
index e2f3ff1ad0d6f..d2bd58459e532 100644
--- a/idea/testData/slicer/inflow/noFieldInGetter.results.txt
+++ b/idea/testData/slicer/inflow/noFieldInGetter.results.txt
@@ -1,4 +1,4 @@
-11 val x = foo
-4 var foo: Int = 0
-4 var foo: Int = 0
-5 get() = 1
+11 val x = foo (in A.test())
+4 var foo: Int = 0 (in A)
+4 var foo: Int = 0 (in A.foo: Int)
+5 get() = 1 (in A.foo: Int)
diff --git a/idea/testData/slicer/inflow/nonLocalReturn.leafGroups.txt b/idea/testData/slicer/inflow/nonLocalReturn.leafGroups.txt
index 1a4bd07895e6c..c3a881c4ae4dd 100644
--- a/idea/testData/slicer/inflow/nonLocalReturn.leafGroups.txt
+++ b/idea/testData/slicer/inflow/nonLocalReturn.leafGroups.txt
@@ -1,22 +1,21 @@
-5 fun bar(a: Int): Int = foo(a) { if (it > 0) it else return 0 }
+5 fun bar(a: Int): Int = foo(a) { if (it > 0) it else return 0 } (in bar(Int))
5 fun bar(a: Int): Int = foo(a) { if (it > 0) it else return 0 }
-5 fun bar(a: Int): Int = foo(a) { if (it > 0) it else return 0 }
+5 fun bar(a: Int): Int = foo(a) { if (it > 0) it else return 0 } (in bar(Int))
3 (INLINE CALL foo) inline fun foo(a: Int, f: (Int) -> Int) = f(a)
-3 (INLINE CALL foo) inline fun foo(a: Int, f: (Int) -> Int) = f(a)
-3 (INLINE CALL foo) [LAMBDA IN] inline fun foo(a: Int, f: (Int) -> Int) = f(a)
-3 (INLINE CALL foo) [LAMBDA IN] inline fun foo(a: Int, f: (Int) -> Int) = f(a)
-5 [LAMBDA IN] fun bar(a: Int): Int = foo(a) { if (it > 0) it else return 0 }
-5 fun bar(a: Int): Int = foo(a) { if (it > 0) it else return 0 }
-5 fun bar(a: Int): Int = foo(a) { if (it > 0) it else return 0 }
-5 fun bar(a: Int): Int = foo(a) { if (it > 0) it else return 0 }
-5 [LAMBDA CALLS ARGUMENT #0] fun bar(a: Int): Int = foo(a) { if (it > 0) it else return 0 }
-3 (INLINE CALL foo) [LAMBDA CALLS ARGUMENT #0] inline fun foo(a: Int, f: (Int) -> Int) = f(a)
-3 (INLINE CALL foo) inline fun foo(a: Int, f: (Int) -> Int) = f(a)
-3 (INLINE CALL foo) inline fun foo(a: Int, f: (Int) -> Int) = f(a)
-5 fun bar(a: Int): Int = foo(a) { if (it > 0) it else return 0 }
-5 fun bar(a: Int): Int = foo(a) { if (it > 0) it else return 0 }
+3 (INLINE CALL foo) inline fun foo(a: Int, f: (Int) -> Int) = f(a) (in foo(Int, (Int) -> Int))
+3 (INLINE CALL foo) [LAMBDA IN] inline fun foo(a: Int, f: (Int) -> Int) = f(a) (in foo(Int, (Int) -> Int))
+3 (INLINE CALL foo) [LAMBDA IN] inline fun foo(a: Int, f: (Int) -> Int) = f(a) (in foo(Int, (Int) -> Int))
+5 [LAMBDA IN] fun bar(a: Int): Int = foo(a) { if (it > 0) it else return 0 } (in bar(Int))
+5 fun bar(a: Int): Int = foo(a) { if (it > 0) it else return 0 } (in bar(Int))
+5 fun bar(a: Int): Int = foo(a) { if (it > 0) it else return 0 } (in bar(Int))
+5 fun bar(a: Int): Int = foo(a) { if (it > 0) it else return 0 } (in bar(Int))
+5 [LAMBDA CALLS ARGUMENT #0] fun bar(a: Int): Int = foo(a) { if (it > 0) it else return 0 } (in bar(Int))
+3 (INLINE CALL foo) [LAMBDA CALLS ARGUMENT #0] inline fun foo(a: Int, f: (Int) -> Int) = f(a) (in foo(Int, (Int) -> Int))
+3 (INLINE CALL foo) inline fun foo(a: Int, f: (Int) -> Int) = f(a) (in foo(Int, (Int) -> Int))
+3 (INLINE CALL foo) inline fun foo(a: Int, f: (Int) -> Int) = f(a) (in foo(Int, (Int) -> Int))
+5 fun bar(a: Int): Int = foo(a) { if (it > 0) it else return 0 } (in bar(Int))
+5 fun bar(a: Int): Int = foo(a) { if (it > 0) it else return 0 } (in bar(Int))
-5 fun bar(a: Int): Int = foo(a) { if (it > 0) it else return 0 }
+5 fun bar(a: Int): Int = foo(a) { if (it > 0) it else return 0 } (in bar(Int))
5 fun bar(a: Int): Int = foo(a) { if (it > 0) it else return 0 }
-5 fun bar(a: Int): Int = foo(a) { if (it > 0) it else return 0 }
-
+5 fun bar(a: Int): Int = foo(a) { if (it > 0) it else return 0 } (in bar(Int))
diff --git a/idea/testData/slicer/inflow/nonLocalReturn.results.txt b/idea/testData/slicer/inflow/nonLocalReturn.results.txt
index 34d330161e202..0c711a2f7860e 100644
--- a/idea/testData/slicer/inflow/nonLocalReturn.results.txt
+++ b/idea/testData/slicer/inflow/nonLocalReturn.results.txt
@@ -1,17 +1,17 @@
5 fun bar(a: Int): Int = foo(a) { if (it > 0) it else return 0 }
-5 fun bar(a: Int): Int = foo(a) { if (it > 0) it else return 0 }
+5 fun bar(a: Int): Int = foo(a) { if (it > 0) it else return 0 } (in bar(Int))
3 (INLINE CALL foo) inline fun foo(a: Int, f: (Int) -> Int) = f(a)
-3 (INLINE CALL foo) inline fun foo(a: Int, f: (Int) -> Int) = f(a)
-3 (INLINE CALL foo) [LAMBDA IN] inline fun foo(a: Int, f: (Int) -> Int) = f(a)
-3 (INLINE CALL foo) [LAMBDA IN] inline fun foo(a: Int, f: (Int) -> Int) = f(a)
-5 [LAMBDA IN] fun bar(a: Int): Int = foo(a) { if (it > 0) it else return 0 }
-5 fun bar(a: Int): Int = foo(a) { if (it > 0) it else return 0 }
-5 fun bar(a: Int): Int = foo(a) { if (it > 0) it else return 0 }
-5 fun bar(a: Int): Int = foo(a) { if (it > 0) it else return 0 }
-5 [LAMBDA CALLS ARGUMENT #0] fun bar(a: Int): Int = foo(a) { if (it > 0) it else return 0 }
-3 (INLINE CALL foo) [LAMBDA CALLS ARGUMENT #0] inline fun foo(a: Int, f: (Int) -> Int) = f(a)
-3 (INLINE CALL foo) inline fun foo(a: Int, f: (Int) -> Int) = f(a)
-3 (INLINE CALL foo) inline fun foo(a: Int, f: (Int) -> Int) = f(a)
-5 fun bar(a: Int): Int = foo(a) { if (it > 0) it else return 0 }
-5 fun bar(a: Int): Int = foo(a) { if (it > 0) it else return 0 }
-5 fun bar(a: Int): Int = foo(a) { if (it > 0) it else return 0 }
+3 (INLINE CALL foo) inline fun foo(a: Int, f: (Int) -> Int) = f(a) (in foo(Int, (Int) -> Int))
+3 (INLINE CALL foo) [LAMBDA IN] inline fun foo(a: Int, f: (Int) -> Int) = f(a) (in foo(Int, (Int) -> Int))
+3 (INLINE CALL foo) [LAMBDA IN] inline fun foo(a: Int, f: (Int) -> Int) = f(a) (in foo(Int, (Int) -> Int))
+5 [LAMBDA IN] fun bar(a: Int): Int = foo(a) { if (it > 0) it else return 0 } (in bar(Int))
+5 fun bar(a: Int): Int = foo(a) { if (it > 0) it else return 0 } (in bar(Int))
+5 fun bar(a: Int): Int = foo(a) { if (it > 0) it else return 0 } (in bar(Int))
+5 fun bar(a: Int): Int = foo(a) { if (it > 0) it else return 0 } (in bar(Int))
+5 [LAMBDA CALLS ARGUMENT #0] fun bar(a: Int): Int = foo(a) { if (it > 0) it else return 0 } (in bar(Int))
+3 (INLINE CALL foo) [LAMBDA CALLS ARGUMENT #0] inline fun foo(a: Int, f: (Int) -> Int) = f(a) (in foo(Int, (Int) -> Int))
+3 (INLINE CALL foo) inline fun foo(a: Int, f: (Int) -> Int) = f(a) (in foo(Int, (Int) -> Int))
+3 (INLINE CALL foo) inline fun foo(a: Int, f: (Int) -> Int) = f(a) (in foo(Int, (Int) -> Int))
+5 fun bar(a: Int): Int = foo(a) { if (it > 0) it else return 0 } (in bar(Int))
+5 fun bar(a: Int): Int = foo(a) { if (it > 0) it else return 0 } (in bar(Int))
+5 fun bar(a: Int): Int = foo(a) { if (it > 0) it else return 0 } (in bar(Int))
diff --git a/idea/testData/slicer/inflow/notNullAssertion.leafGroups.txt b/idea/testData/slicer/inflow/notNullAssertion.leafGroups.txt
index e657a597ff741..9848eedf1033f 100644
--- a/idea/testData/slicer/inflow/notNullAssertion.leafGroups.txt
+++ b/idea/testData/slicer/inflow/notNullAssertion.leafGroups.txt
@@ -1,6 +1,5 @@
-3 fun test(s: String?) {
-4 val x = s!!
-4 val x = s!!
-4 val x = s!!
-3 fun test(s: String?) {
-
+3 fun test(s: String?) { (in test(String?))
+4 val x = s!! (in test(String?))
+4 val x = s!! (in test(String?))
+4 val x = s!! (in test(String?))
+3 fun test(s: String?) { (in test(String?))
diff --git a/idea/testData/slicer/inflow/notNullAssertion.nullnessGroups.txt b/idea/testData/slicer/inflow/notNullAssertion.nullnessGroups.txt
index 6a3a2fae0515f..215da21bab3e8 100644
--- a/idea/testData/slicer/inflow/notNullAssertion.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/notNullAssertion.nullnessGroups.txt
@@ -1,3 +1,3 @@
[NotNull Values]
-4 val x = s!!
-4 val x = s!!
+4 val x = s!! (in test(String?))
+4 val x = s!! (in test(String?))
diff --git a/idea/testData/slicer/inflow/notNullAssertion.results.txt b/idea/testData/slicer/inflow/notNullAssertion.results.txt
index 3add28a423bc8..3c5dd79a495c5 100644
--- a/idea/testData/slicer/inflow/notNullAssertion.results.txt
+++ b/idea/testData/slicer/inflow/notNullAssertion.results.txt
@@ -1,4 +1,4 @@
-4 val x = s!!
-4 val x = s!!
-4 val x = s!!
-3 fun test(s: String?) {
+4 val x = s!! (in test(String?))
+4 val x = s!! (in test(String?))
+4 val x = s!! (in test(String?))
+3 fun test(s: String?) { (in test(String?))
diff --git a/idea/testData/slicer/inflow/nullsAndNotNulls.leafGroups.txt b/idea/testData/slicer/inflow/nullsAndNotNulls.leafGroups.txt
index 9ec6507667dc9..f400c3c1ee662 100644
--- a/idea/testData/slicer/inflow/nullsAndNotNulls.leafGroups.txt
+++ b/idea/testData/slicer/inflow/nullsAndNotNulls.leafGroups.txt
@@ -1,17 +1,17 @@
-7 else -> null
-9 return s
-4 var s = when {
-4 var s = when {
-7 else -> null
+7 else -> null (in test(Int))
+9 return s (in test(Int))
+4 var s = when { (in test(Int))
+4 var s = when { (in test(Int))
+7 else -> null (in test(Int))
-6 n < 0 -> "-"
-9 return s
-4 var s = when {
-4 var s = when {
-6 n < 0 -> "-"
+6 n < 0 -> "-" (in test(Int))
+9 return s (in test(Int))
+4 var s = when { (in test(Int))
+4 var s = when { (in test(Int))
+6 n < 0 -> "-" (in test(Int))
-5 n > 0 -> "+"
-9 return s
-4 var s = when {
-4 var s = when {
-5 n > 0 -> "+"
+5 n > 0 -> "+" (in test(Int))
+9 return s (in test(Int))
+4 var s = when { (in test(Int))
+4 var s = when { (in test(Int))
+5 n > 0 -> "+" (in test(Int))
diff --git a/idea/testData/slicer/inflow/nullsAndNotNulls.nullnessGroups.txt b/idea/testData/slicer/inflow/nullsAndNotNulls.nullnessGroups.txt
index 83a482fd744bb..e168ec837adca 100644
--- a/idea/testData/slicer/inflow/nullsAndNotNulls.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/nullsAndNotNulls.nullnessGroups.txt
@@ -1,19 +1,18 @@
[Null Values]
-7 else -> null
-9 return s
-4 var s = when {
-4 var s = when {
-7 else -> null
+7 else -> null (in test(Int))
+9 return s (in test(Int))
+4 var s = when { (in test(Int))
+4 var s = when { (in test(Int))
+7 else -> null (in test(Int))
[NotNull Values]
-5 n > 0 -> "+"
-9 return s
-4 var s = when {
-4 var s = when {
-5 n > 0 -> "+"
-6 n < 0 -> "-"
-9 return s
-4 var s = when {
-4 var s = when {
-6 n < 0 -> "-"
-
+5 n > 0 -> "+" (in test(Int))
+9 return s (in test(Int))
+4 var s = when { (in test(Int))
+4 var s = when { (in test(Int))
+5 n > 0 -> "+" (in test(Int))
+6 n < 0 -> "-" (in test(Int))
+9 return s (in test(Int))
+4 var s = when { (in test(Int))
+4 var s = when { (in test(Int))
+6 n < 0 -> "-" (in test(Int))
diff --git a/idea/testData/slicer/inflow/nullsAndNotNulls.results.txt b/idea/testData/slicer/inflow/nullsAndNotNulls.results.txt
index 9a334b9d9e761..fc23543dadbad 100644
--- a/idea/testData/slicer/inflow/nullsAndNotNulls.results.txt
+++ b/idea/testData/slicer/inflow/nullsAndNotNulls.results.txt
@@ -1,6 +1,6 @@
-9 return s
-4 var s = when {
-4 var s = when {
-5 n > 0 -> "+"
-6 n < 0 -> "-"
-7 else -> null
+9 return s (in test(Int))
+4 var s = when { (in test(Int))
+4 var s = when { (in test(Int))
+5 n > 0 -> "+" (in test(Int))
+6 n < 0 -> "-" (in test(Int))
+7 else -> null (in test(Int))
diff --git a/idea/testData/slicer/inflow/onFunctionReceiverType.leafGroups.txt b/idea/testData/slicer/inflow/onFunctionReceiverType.leafGroups.txt
index 06bdfcd36f552..995decfd2e893 100644
--- a/idea/testData/slicer/inflow/onFunctionReceiverType.leafGroups.txt
+++ b/idea/testData/slicer/inflow/onFunctionReceiverType.leafGroups.txt
@@ -1,25 +1,24 @@
-12 "".extensionFun()
-8 fun Any.extensionFun() {
-12 "".extensionFun()
+12 "".extensionFun() (in foo() on String)
+8 fun Any.extensionFun() { (in extensionFun() on Any)
+12 "".extensionFun() (in foo() on String)
-24 "A".foo()
-8 fun Any.extensionFun() {
-11 fun String.foo() {
-24 "A".foo()
+24 "A".foo() (in main())
+8 fun Any.extensionFun() { (in extensionFun() on Any)
+11 fun String.foo() { (in foo() on String)
+24 "A".foo() (in main())
3 KotlinUtil.extensionFun("x");
-8 fun Any.extensionFun() {
+8 fun Any.extensionFun() { (in extensionFun() on Any)
3 KotlinUtil.extensionFun("x");
-14 1.extensionFun()
-8 fun Any.extensionFun() {
-14 1.extensionFun()
-
-18 with(123) {
-8 fun Any.extensionFun() {
-18 [LAMBDA CALLS RECEIVER] with(123) {
-LIB (INLINE CALL with) [LAMBDA CALLS RECEIVER] public inline fun with(receiver: T, block: T.() -> R): R {
-LIB (INLINE CALL with) return receiver.block()
-LIB (INLINE CALL with) public inline fun with(receiver: T, block: T.() -> R): R {
-18 with(123) {
+14 1.extensionFun() (in foo() on String)
+8 fun Any.extensionFun() { (in extensionFun() on Any)
+14 1.extensionFun() (in foo() on String)
+18 with(123) { (in foo() on String)
+8 fun Any.extensionFun() { (in extensionFun() on Any)
+18 [LAMBDA CALLS RECEIVER] with(123) { (in foo() on String)
+LIB (INLINE CALL with) [LAMBDA CALLS RECEIVER] public inline fun with(receiver: T, block: T.() -> R): R { (in with(T, T.() -> R))
+LIB (INLINE CALL with) return receiver.block() (in with(T, T.() -> R))
+LIB (INLINE CALL with) public inline fun with(receiver: T, block: T.() -> R): R { (in with(T, T.() -> R))
+18 with(123) { (in foo() on String)
diff --git a/idea/testData/slicer/inflow/onFunctionReceiverType.nullnessGroups.txt b/idea/testData/slicer/inflow/onFunctionReceiverType.nullnessGroups.txt
index 8b0a64b9f08f5..8dd740c1dac68 100644
--- a/idea/testData/slicer/inflow/onFunctionReceiverType.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/onFunctionReceiverType.nullnessGroups.txt
@@ -1,24 +1,23 @@
[NotNull Values]
-12 "".extensionFun()
-8 fun Any.extensionFun() {
-12 "".extensionFun()
-14 1.extensionFun()
-8 fun Any.extensionFun() {
-14 1.extensionFun()
-18 with(123) {
-8 fun Any.extensionFun() {
-18 [LAMBDA CALLS RECEIVER] with(123) {
-LIB (INLINE CALL with) [LAMBDA CALLS RECEIVER] public inline fun with(receiver: T, block: T.() -> R): R {
-LIB (INLINE CALL with) return receiver.block()
-LIB (INLINE CALL with) public inline fun with(receiver: T, block: T.() -> R): R {
-18 with(123) {
-24 "A".foo()
-8 fun Any.extensionFun() {
-11 fun String.foo() {
-24 "A".foo()
+12 "".extensionFun() (in foo() on String)
+8 fun Any.extensionFun() { (in extensionFun() on Any)
+12 "".extensionFun() (in foo() on String)
+14 1.extensionFun() (in foo() on String)
+8 fun Any.extensionFun() { (in extensionFun() on Any)
+14 1.extensionFun() (in foo() on String)
+18 with(123) { (in foo() on String)
+8 fun Any.extensionFun() { (in extensionFun() on Any)
+18 [LAMBDA CALLS RECEIVER] with(123) { (in foo() on String)
+LIB (INLINE CALL with) [LAMBDA CALLS RECEIVER] public inline fun with(receiver: T, block: T.() -> R): R { (in with(T, T.() -> R))
+LIB (INLINE CALL with) return receiver.block() (in with(T, T.() -> R))
+LIB (INLINE CALL with) public inline fun with(receiver: T, block: T.() -> R): R { (in with(T, T.() -> R))
+18 with(123) { (in foo() on String)
+24 "A".foo() (in main())
+8 fun Any.extensionFun() { (in extensionFun() on Any)
+11 fun String.foo() { (in foo() on String)
+24 "A".foo() (in main())
[Other Values]
3 KotlinUtil.extensionFun("x");
-8 fun Any.extensionFun() {
+8 fun Any.extensionFun() { (in extensionFun() on Any)
3 KotlinUtil.extensionFun("x");
-
diff --git a/idea/testData/slicer/inflow/onFunctionReceiverType.results.txt b/idea/testData/slicer/inflow/onFunctionReceiverType.results.txt
index c27db30a17a76..932a859591b84 100644
--- a/idea/testData/slicer/inflow/onFunctionReceiverType.results.txt
+++ b/idea/testData/slicer/inflow/onFunctionReceiverType.results.txt
@@ -1,11 +1,11 @@
-8 fun Any.extensionFun() {
+8 fun Any.extensionFun() { (in extensionFun() on Any)
3 KotlinUtil.extensionFun("x");
-11 fun String.foo() {
-24 "A".foo()
-12 "".extensionFun()
-14 1.extensionFun()
-18 [LAMBDA CALLS RECEIVER] with(123) {
-LIB (INLINE CALL with) [LAMBDA CALLS RECEIVER] public inline fun with(receiver: T, block: T.() -> R): R {
-LIB (INLINE CALL with) return receiver.block()
-LIB (INLINE CALL with) public inline fun with(receiver: T, block: T.() -> R): R {
-18 with(123) {
+11 fun String.foo() { (in foo() on String)
+24 "A".foo() (in main())
+12 "".extensionFun() (in foo() on String)
+14 1.extensionFun() (in foo() on String)
+18 [LAMBDA CALLS RECEIVER] with(123) { (in foo() on String)
+LIB (INLINE CALL with) [LAMBDA CALLS RECEIVER] public inline fun with(receiver: T, block: T.() -> R): R { (in with(T, T.() -> R))
+LIB (INLINE CALL with) return receiver.block() (in with(T, T.() -> R))
+LIB (INLINE CALL with) public inline fun with(receiver: T, block: T.() -> R): R { (in with(T, T.() -> R))
+18 with(123) { (in foo() on String)
diff --git a/idea/testData/slicer/inflow/onPropertyReceiverType.leafGroups.txt b/idea/testData/slicer/inflow/onPropertyReceiverType.leafGroups.txt
index a89ba8c7206a1..149b4b89c6ec8 100644
--- a/idea/testData/slicer/inflow/onPropertyReceiverType.leafGroups.txt
+++ b/idea/testData/slicer/inflow/onPropertyReceiverType.leafGroups.txt
@@ -1,8 +1,7 @@
-9 "b".property = 2
-3 var Any.property: Int
-9 "b".property = 2
-
-8 val v = "a".property
-3 var Any.property: Int
-8 val v = "a".property
+9 "b".property = 2 (in foo())
+3 var Any.property: Int (in property: Int on Any)
+9 "b".property = 2 (in foo())
+8 val v = "a".property (in foo())
+3 var Any.property: Int (in property: Int on Any)
+8 val v = "a".property (in foo())
diff --git a/idea/testData/slicer/inflow/onPropertyReceiverType.nullnessGroups.txt b/idea/testData/slicer/inflow/onPropertyReceiverType.nullnessGroups.txt
index 0717948869609..984d505d40fa0 100644
--- a/idea/testData/slicer/inflow/onPropertyReceiverType.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/onPropertyReceiverType.nullnessGroups.txt
@@ -1,8 +1,7 @@
[NotNull Values]
-8 val v = "a".property
-3 var Any.property: Int
-8 val v = "a".property
-9 "b".property = 2
-3 var Any.property: Int
-9 "b".property = 2
-
+8 val v = "a".property (in foo())
+3 var Any.property: Int (in property: Int on Any)
+8 val v = "a".property (in foo())
+9 "b".property = 2 (in foo())
+3 var Any.property: Int (in property: Int on Any)
+9 "b".property = 2 (in foo())
diff --git a/idea/testData/slicer/inflow/onPropertyReceiverType.results.txt b/idea/testData/slicer/inflow/onPropertyReceiverType.results.txt
index 764b81645cd68..573d684cdc52b 100644
--- a/idea/testData/slicer/inflow/onPropertyReceiverType.results.txt
+++ b/idea/testData/slicer/inflow/onPropertyReceiverType.results.txt
@@ -1,3 +1,3 @@
-3 var Any.property: Int
-8 val v = "a".property
-9 "b".property = 2
+3 var Any.property: Int (in property: Int on Any)
+8 val v = "a".property (in foo())
+9 "b".property = 2 (in foo())
diff --git a/idea/testData/slicer/inflow/openFun.leafGroups.txt b/idea/testData/slicer/inflow/openFun.leafGroups.txt
index 8195b43666ad8..200a7478b080d 100644
--- a/idea/testData/slicer/inflow/openFun.leafGroups.txt
+++ b/idea/testData/slicer/inflow/openFun.leafGroups.txt
@@ -1,5 +1,4 @@
-9 other?.bar(p + 1)
-13 println(p + 2)
-12 open fun bar(p: Int) {
-9 other?.bar(p + 1)
-
+9 other?.bar(p + 1) (in C.foo(Int))
+13 println(p + 2) (in C.bar(Int))
+12 open fun bar(p: Int) { (in C.bar(Int))
+9 other?.bar(p + 1) (in C.foo(Int))
diff --git a/idea/testData/slicer/inflow/openFun.nullnessGroups.txt b/idea/testData/slicer/inflow/openFun.nullnessGroups.txt
index ee4ca595127be..f3cdae143dfe3 100644
--- a/idea/testData/slicer/inflow/openFun.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/openFun.nullnessGroups.txt
@@ -1,4 +1,3 @@
[NotNull Values]
-13 println(p + 2)
-13 println(p + 2)
-
+13 println(p + 2) (in C.bar(Int))
+13 println(p + 2) (in C.bar(Int))
diff --git a/idea/testData/slicer/inflow/openFun.results.txt b/idea/testData/slicer/inflow/openFun.results.txt
index d48191e1b03d1..b78e6e93a531f 100644
--- a/idea/testData/slicer/inflow/openFun.results.txt
+++ b/idea/testData/slicer/inflow/openFun.results.txt
@@ -1,3 +1,3 @@
-13 println(p + 2)
-12 open fun bar(p: Int) {
-9 other?.bar(p + 1)
+13 println(p + 2) (in C.bar(Int))
+12 open fun bar(p: Int) { (in C.bar(Int))
+9 other?.bar(p + 1) (in C.foo(Int))
diff --git a/idea/testData/slicer/inflow/openFunInvokeOnParameter.leafGroups.txt b/idea/testData/slicer/inflow/openFunInvokeOnParameter.leafGroups.txt
index a328960b2676b..c93cb5da4dd4f 100644
--- a/idea/testData/slicer/inflow/openFunInvokeOnParameter.leafGroups.txt
+++ b/idea/testData/slicer/inflow/openFunInvokeOnParameter.leafGroups.txt
@@ -1,8 +1,7 @@
-9 other?.bar(p + 1)
-12 open fun bar(p: Int) {
-9 other?.bar(p + 1)
-
-22 other?.bar(p + 3)
-12 open fun bar(p: Int) {
-22 other?.bar(p + 3)
+9 other?.bar(p + 1) (in C.foo(Int))
+12 open fun bar(p: Int) { (in C.bar(Int))
+9 other?.bar(p + 1) (in C.foo(Int))
+22 other?.bar(p + 3) (in D.foo(Int))
+12 open fun bar(p: Int) { (in C.bar(Int))
+22 other?.bar(p + 3) (in D.foo(Int))
diff --git a/idea/testData/slicer/inflow/openFunInvokeOnParameter.nullnessGroups.txt b/idea/testData/slicer/inflow/openFunInvokeOnParameter.nullnessGroups.txt
index d7e6b417f1c58..727f2aec35fa5 100644
--- a/idea/testData/slicer/inflow/openFunInvokeOnParameter.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/openFunInvokeOnParameter.nullnessGroups.txt
@@ -1,4 +1,3 @@
[NotNull Values]
-12 open fun bar(p: Int) {
-12 open fun bar(p: Int) {
-
+12 open fun bar(p: Int) { (in C.bar(Int))
+12 open fun bar(p: Int) { (in C.bar(Int))
diff --git a/idea/testData/slicer/inflow/openFunInvokeOnParameter.results.txt b/idea/testData/slicer/inflow/openFunInvokeOnParameter.results.txt
index 91deb3ca9f4a0..cf494ffc33f1a 100644
--- a/idea/testData/slicer/inflow/openFunInvokeOnParameter.results.txt
+++ b/idea/testData/slicer/inflow/openFunInvokeOnParameter.results.txt
@@ -1,3 +1,3 @@
-12 open fun bar(p: Int) {
-9 other?.bar(p + 1)
-22 other?.bar(p + 3)
+12 open fun bar(p: Int) { (in C.bar(Int))
+9 other?.bar(p + 1) (in C.foo(Int))
+22 other?.bar(p + 3) (in D.foo(Int))
diff --git a/idea/testData/slicer/inflow/overrideExtension1.leafGroups.txt b/idea/testData/slicer/inflow/overrideExtension1.leafGroups.txt
index 9dbb5c229044f..01ecda98b235e 100644
--- a/idea/testData/slicer/inflow/overrideExtension1.leafGroups.txt
+++ b/idea/testData/slicer/inflow/overrideExtension1.leafGroups.txt
@@ -1,5 +1,4 @@
-9 1.extensionFun()
-5 val v = this
-4 open fun Int.extensionFun() {
-9 1.extensionFun()
-
+9 1.extensionFun() (in Base.baseF())
+5 val v = this (in extensionFun() on Int)
+4 open fun Int.extensionFun() { (in extensionFun() on Int)
+9 1.extensionFun() (in Base.baseF())
diff --git a/idea/testData/slicer/inflow/overrideExtension1.nullnessGroups.txt b/idea/testData/slicer/inflow/overrideExtension1.nullnessGroups.txt
index 3cfce4a620a52..89b82868285b1 100644
--- a/idea/testData/slicer/inflow/overrideExtension1.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/overrideExtension1.nullnessGroups.txt
@@ -1,4 +1,3 @@
[NotNull Values]
-5 val v = this
-5 val v = this
-
+5 val v = this (in extensionFun() on Int)
+5 val v = this (in extensionFun() on Int)
diff --git a/idea/testData/slicer/inflow/overrideExtension1.results.txt b/idea/testData/slicer/inflow/overrideExtension1.results.txt
index 0eb6e87ee684a..8ba41a316ad79 100644
--- a/idea/testData/slicer/inflow/overrideExtension1.results.txt
+++ b/idea/testData/slicer/inflow/overrideExtension1.results.txt
@@ -1,3 +1,3 @@
-5 val v = this
-4 open fun Int.extensionFun() {
-9 1.extensionFun()
+5 val v = this (in extensionFun() on Int)
+4 open fun Int.extensionFun() { (in extensionFun() on Int)
+9 1.extensionFun() (in Base.baseF())
diff --git a/idea/testData/slicer/inflow/overrideExtension2.leafGroups.txt b/idea/testData/slicer/inflow/overrideExtension2.leafGroups.txt
index 47e6d291b2aee..0edfe29cb3604 100644
--- a/idea/testData/slicer/inflow/overrideExtension2.leafGroups.txt
+++ b/idea/testData/slicer/inflow/overrideExtension2.leafGroups.txt
@@ -1,7 +1,7 @@
-9 1.extensionFun()
-4 open fun Int.extensionFun() {
-9 1.extensionFun()
+9 1.extensionFun() (in Base.baseF())
+4 open fun Int.extensionFun() { (in extensionFun() on Int)
+9 1.extensionFun() (in Base.baseF())
-18 2.extensionFun()
-4 open fun Int.extensionFun() {
-18 2.extensionFun()
+18 2.extensionFun() (in Derived.derivedF())
+4 open fun Int.extensionFun() { (in extensionFun() on Int)
+18 2.extensionFun() (in Derived.derivedF())
diff --git a/idea/testData/slicer/inflow/overrideExtension2.nullnessGroups.txt b/idea/testData/slicer/inflow/overrideExtension2.nullnessGroups.txt
index 24d72add4c0eb..6437e8e333f4d 100644
--- a/idea/testData/slicer/inflow/overrideExtension2.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/overrideExtension2.nullnessGroups.txt
@@ -1,7 +1,7 @@
[NotNull Values]
-9 1.extensionFun()
-4 open fun Int.extensionFun() {
-9 1.extensionFun()
-18 2.extensionFun()
-4 open fun Int.extensionFun() {
-18 2.extensionFun()
+9 1.extensionFun() (in Base.baseF())
+4 open fun Int.extensionFun() { (in extensionFun() on Int)
+9 1.extensionFun() (in Base.baseF())
+18 2.extensionFun() (in Derived.derivedF())
+4 open fun Int.extensionFun() { (in extensionFun() on Int)
+18 2.extensionFun() (in Derived.derivedF())
diff --git a/idea/testData/slicer/inflow/overrideExtension2.results.txt b/idea/testData/slicer/inflow/overrideExtension2.results.txt
index 87da662e608fb..ed76e18f8c169 100644
--- a/idea/testData/slicer/inflow/overrideExtension2.results.txt
+++ b/idea/testData/slicer/inflow/overrideExtension2.results.txt
@@ -1,3 +1,3 @@
-4 open fun Int.extensionFun() {
-9 1.extensionFun()
-18 2.extensionFun()
+4 open fun Int.extensionFun() { (in extensionFun() on Int)
+9 1.extensionFun() (in Base.baseF())
+18 2.extensionFun() (in Derived.derivedF())
diff --git a/idea/testData/slicer/inflow/overrideFun.leafGroups.txt b/idea/testData/slicer/inflow/overrideFun.leafGroups.txt
index 43eb929df214a..485e7fd8ff7e0 100644
--- a/idea/testData/slicer/inflow/overrideFun.leafGroups.txt
+++ b/idea/testData/slicer/inflow/overrideFun.leafGroups.txt
@@ -1,16 +1,15 @@
-22 i.foo(3)
-9 val v = p
-8 override fun foo(p: Int) {
+22 i.foo(3) (in g(JavaInterface))
+9 val v = p (in C.foo(Int))
+8 override fun foo(p: Int) { (in C.foo(Int))
2 void foo(int p);
-22 i.foo(3)
+22 i.foo(3) (in g(JavaInterface))
-13 foo(1)
-9 val v = p
-8 override fun foo(p: Int) {
-13 foo(1)
-
-18 i.foo(2)
-9 val v = p
-8 override fun foo(p: Int) {
-18 i.foo(2)
+13 foo(1) (in C.f())
+9 val v = p (in C.foo(Int))
+8 override fun foo(p: Int) { (in C.foo(Int))
+13 foo(1) (in C.f())
+18 i.foo(2) (in f(I))
+9 val v = p (in C.foo(Int))
+8 override fun foo(p: Int) { (in C.foo(Int))
+18 i.foo(2) (in f(I))
diff --git a/idea/testData/slicer/inflow/overrideFun.nullnessGroups.txt b/idea/testData/slicer/inflow/overrideFun.nullnessGroups.txt
index 00f079584f59b..371d3e7aa86be 100644
--- a/idea/testData/slicer/inflow/overrideFun.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/overrideFun.nullnessGroups.txt
@@ -1,4 +1,3 @@
[NotNull Values]
-9 val v = p
-9 val v = p
-
+9 val v = p (in C.foo(Int))
+9 val v = p (in C.foo(Int))
diff --git a/idea/testData/slicer/inflow/overrideFun.results.txt b/idea/testData/slicer/inflow/overrideFun.results.txt
index e670a570517df..64d6527d1d6be 100644
--- a/idea/testData/slicer/inflow/overrideFun.results.txt
+++ b/idea/testData/slicer/inflow/overrideFun.results.txt
@@ -1,7 +1,7 @@
-9 val v = p
-8 override fun foo(p: Int) {
+9 val v = p (in C.foo(Int))
+8 override fun foo(p: Int) { (in C.foo(Int))
2 void foo(int p);
-13 foo(1)
-22 i.foo(3)
-13 foo(1)
-18 i.foo(2)
+13 foo(1) (in C.f())
+22 i.foo(3) (in g(JavaInterface))
+13 foo(1) (in C.f())
+18 i.foo(2) (in f(I))
diff --git a/idea/testData/slicer/inflow/overrideProperty.leafGroups.txt b/idea/testData/slicer/inflow/overrideProperty.leafGroups.txt
index 71ad7fd000062..e04f8bbca8f44 100644
--- a/idea/testData/slicer/inflow/overrideProperty.leafGroups.txt
+++ b/idea/testData/slicer/inflow/overrideProperty.leafGroups.txt
@@ -1,11 +1,11 @@
-8 override var prop: Int = 1
-13 val v = d.prop
-13 val v = d.prop
-8 override var prop: Int = 1
-8 override var prop: Int = 1
+8 override var prop: Int = 1 (in Derived.prop: Int)
+13 val v = d.prop (in foo(Base, Derived))
+13 val v = d.prop (in foo(Base, Derived))
+8 override var prop: Int = 1 (in Derived)
+8 override var prop: Int = 1 (in Derived.prop: Int)
-12 b.prop = 10
-13 val v = d.prop
-13 val v = d.prop
-8 override var prop: Int = 1
-12 b.prop = 10
+12 b.prop = 10 (in foo(Base, Derived))
+13 val v = d.prop (in foo(Base, Derived))
+13 val v = d.prop (in foo(Base, Derived))
+8 override var prop: Int = 1 (in Derived)
+12 b.prop = 10 (in foo(Base, Derived))
diff --git a/idea/testData/slicer/inflow/overrideProperty.nullnessGroups.txt b/idea/testData/slicer/inflow/overrideProperty.nullnessGroups.txt
index 9fb76243a4969..840c90aa030bb 100644
--- a/idea/testData/slicer/inflow/overrideProperty.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/overrideProperty.nullnessGroups.txt
@@ -1,3 +1,3 @@
[NotNull Values]
-13 val v = d.prop
-13 val v = d.prop
+13 val v = d.prop (in foo(Base, Derived))
+13 val v = d.prop (in foo(Base, Derived))
diff --git a/idea/testData/slicer/inflow/overrideProperty.results.txt b/idea/testData/slicer/inflow/overrideProperty.results.txt
index 3c1e88d32e7e5..e7ea48f7dde7f 100644
--- a/idea/testData/slicer/inflow/overrideProperty.results.txt
+++ b/idea/testData/slicer/inflow/overrideProperty.results.txt
@@ -1,5 +1,5 @@
-13 val v = d.prop
-13 val v = d.prop
-8 override var prop: Int = 1
-8 override var prop: Int = 1
-12 b.prop = 10
+13 val v = d.prop (in foo(Base, Derived))
+13 val v = d.prop (in foo(Base, Derived))
+8 override var prop: Int = 1 (in Derived)
+8 override var prop: Int = 1 (in Derived.prop: Int)
+12 b.prop = 10 (in foo(Base, Derived))
diff --git a/idea/testData/slicer/inflow/overridingFunctionResult.leafGroups.txt b/idea/testData/slicer/inflow/overridingFunctionResult.leafGroups.txt
index 35020314510ce..ec5595b82aa47 100644
--- a/idea/testData/slicer/inflow/overridingFunctionResult.leafGroups.txt
+++ b/idea/testData/slicer/inflow/overridingFunctionResult.leafGroups.txt
@@ -1,17 +1,16 @@
-8 override fun foo() = 2
-17 val y = b.foo()
-17 val y = b.foo()
-8 override fun foo() = 2
-8 override fun foo() = 2
+8 override fun foo() = 2 (in B.foo())
+17 val y = b.foo() (in test(A, B, C))
+17 val y = b.foo() (in test(A, B, C))
+8 override fun foo() = 2 (in B)
+8 override fun foo() = 2 (in B.foo())
-12 override fun foo() = 3
-17 val y = b.foo()
-17 val y = b.foo()
-12 override fun foo() = 3
-12 override fun foo() = 3
+12 override fun foo() = 3 (in C.foo())
+17 val y = b.foo() (in test(A, B, C))
+17 val y = b.foo() (in test(A, B, C))
+12 override fun foo() = 3 (in C)
+12 override fun foo() = 3 (in C.foo())
3 return 5;
-17 val y = b.foo()
-17 val y = b.foo()
+17 val y = b.foo() (in test(A, B, C))
+17 val y = b.foo() (in test(A, B, C))
3 return 5;
-
diff --git a/idea/testData/slicer/inflow/overridingFunctionResult.nullnessGroups.txt b/idea/testData/slicer/inflow/overridingFunctionResult.nullnessGroups.txt
index b6ab3a279122b..55a1f71430d8e 100644
--- a/idea/testData/slicer/inflow/overridingFunctionResult.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/overridingFunctionResult.nullnessGroups.txt
@@ -1,3 +1,3 @@
[NotNull Values]
-17 val y = b.foo()
-17 val y = b.foo()
+17 val y = b.foo() (in test(A, B, C))
+17 val y = b.foo() (in test(A, B, C))
diff --git a/idea/testData/slicer/inflow/overridingFunctionResult.results.txt b/idea/testData/slicer/inflow/overridingFunctionResult.results.txt
index 3739d4f7fecbd..b170f95b8fba3 100644
--- a/idea/testData/slicer/inflow/overridingFunctionResult.results.txt
+++ b/idea/testData/slicer/inflow/overridingFunctionResult.results.txt
@@ -1,7 +1,7 @@
-17 val y = b.foo()
-17 val y = b.foo()
+17 val y = b.foo() (in test(A, B, C))
+17 val y = b.foo() (in test(A, B, C))
3 return 5;
-8 override fun foo() = 2
-8 override fun foo() = 2
-12 override fun foo() = 3
-12 override fun foo() = 3
+8 override fun foo() = 2 (in B)
+8 override fun foo() = 2 (in B.foo())
+12 override fun foo() = 3 (in C)
+12 override fun foo() = 3 (in C.foo())
diff --git a/idea/testData/slicer/inflow/overridingParameter.leafGroups.txt b/idea/testData/slicer/inflow/overridingParameter.leafGroups.txt
index 88a8b4b6555f0..d6b16529781f0 100644
--- a/idea/testData/slicer/inflow/overridingParameter.leafGroups.txt
+++ b/idea/testData/slicer/inflow/overridingParameter.leafGroups.txt
@@ -1,23 +1,22 @@
-9 class C : B(1) {
-15 val y = b.foo
-15 val y = b.foo
-7 open class B(override val foo: Int) : A()
-9 class C : B(1) {
+9 class C : B(1) { (in C)
+15 val y = b.foo (in test(A, B, C))
+15 val y = b.foo (in test(A, B, C))
+7 open class B(override val foo: Int) : A() (in B(Int))
+9 class C : B(1) { (in C)
-10 override val foo = 3
-15 val y = b.foo
-15 val y = b.foo
-10 override val foo = 3
-10 override val foo = 3
+10 override val foo = 3 (in C.foo: Int)
+15 val y = b.foo (in test(A, B, C))
+15 val y = b.foo (in test(A, B, C))
+10 override val foo = 3 (in C)
+10 override val foo = 3 (in C.foo: Int)
7 return 5;
-15 val y = b.foo
-15 val y = b.foo
+15 val y = b.foo (in test(A, B, C))
+15 val y = b.foo (in test(A, B, C))
7 return 5;
3 super(10);
-15 val y = b.foo
-15 val y = b.foo
-7 open class B(override val foo: Int) : A()
+15 val y = b.foo (in test(A, B, C))
+15 val y = b.foo (in test(A, B, C))
+7 open class B(override val foo: Int) : A() (in B(Int))
3 super(10);
-
diff --git a/idea/testData/slicer/inflow/overridingParameter.nullnessGroups.txt b/idea/testData/slicer/inflow/overridingParameter.nullnessGroups.txt
index 4c2636dfb3f3e..1b3961a6349a4 100644
--- a/idea/testData/slicer/inflow/overridingParameter.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/overridingParameter.nullnessGroups.txt
@@ -1,3 +1,3 @@
[NotNull Values]
-15 val y = b.foo
-15 val y = b.foo
+15 val y = b.foo (in test(A, B, C))
+15 val y = b.foo (in test(A, B, C))
diff --git a/idea/testData/slicer/inflow/overridingParameter.results.txt b/idea/testData/slicer/inflow/overridingParameter.results.txt
index 3a5d9032bd0d5..9208582603b6e 100644
--- a/idea/testData/slicer/inflow/overridingParameter.results.txt
+++ b/idea/testData/slicer/inflow/overridingParameter.results.txt
@@ -1,8 +1,8 @@
-15 val y = b.foo
-15 val y = b.foo
-7 open class B(override val foo: Int) : A()
+15 val y = b.foo (in test(A, B, C))
+15 val y = b.foo (in test(A, B, C))
+7 open class B(override val foo: Int) : A() (in B(Int))
3 super(10);
-9 class C : B(1) {
+9 class C : B(1) { (in C)
7 return 5;
-10 override val foo = 3
-10 override val foo = 3
+10 override val foo = 3 (in C)
+10 override val foo = 3 (in C.foo: Int)
diff --git a/idea/testData/slicer/inflow/overridingPropertyGetterResult.leafGroups.txt b/idea/testData/slicer/inflow/overridingPropertyGetterResult.leafGroups.txt
index 01188c82ae4de..33ab39e0ec117 100644
--- a/idea/testData/slicer/inflow/overridingPropertyGetterResult.leafGroups.txt
+++ b/idea/testData/slicer/inflow/overridingPropertyGetterResult.leafGroups.txt
@@ -1,17 +1,16 @@
-10 get() = 2
-20 val y = b.foo
-20 val y = b.foo
-9 override val foo: Int
-10 get() = 2
+10 get() = 2 (in B.foo: Int)
+20 val y = b.foo (in test(A, B, C))
+20 val y = b.foo (in test(A, B, C))
+9 override val foo: Int (in B)
+10 get() = 2 (in B.foo: Int)
-15 get() = 3
-20 val y = b.foo
-20 val y = b.foo
-14 override val foo: Int
-15 get() = 3
+15 get() = 3 (in C.foo: Int)
+20 val y = b.foo (in test(A, B, C))
+20 val y = b.foo (in test(A, B, C))
+14 override val foo: Int (in C)
+15 get() = 3 (in C.foo: Int)
3 return 5;
-20 val y = b.foo
-20 val y = b.foo
+20 val y = b.foo (in test(A, B, C))
+20 val y = b.foo (in test(A, B, C))
3 return 5;
-
diff --git a/idea/testData/slicer/inflow/overridingPropertyGetterResult.nullnessGroups.txt b/idea/testData/slicer/inflow/overridingPropertyGetterResult.nullnessGroups.txt
index 893088d2aa855..4a09fdafcf41d 100644
--- a/idea/testData/slicer/inflow/overridingPropertyGetterResult.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/overridingPropertyGetterResult.nullnessGroups.txt
@@ -1,3 +1,3 @@
[NotNull Values]
-20 val y = b.foo
-20 val y = b.foo
+20 val y = b.foo (in test(A, B, C))
+20 val y = b.foo (in test(A, B, C))
diff --git a/idea/testData/slicer/inflow/overridingPropertyGetterResult.results.txt b/idea/testData/slicer/inflow/overridingPropertyGetterResult.results.txt
index 56cfb35aca39b..40b7b8036a0d2 100644
--- a/idea/testData/slicer/inflow/overridingPropertyGetterResult.results.txt
+++ b/idea/testData/slicer/inflow/overridingPropertyGetterResult.results.txt
@@ -1,7 +1,7 @@
-20 val y = b.foo
-20 val y = b.foo
+20 val y = b.foo (in test(A, B, C))
+20 val y = b.foo (in test(A, B, C))
3 return 5;
-9 override val foo: Int
-10 get() = 2
-14 override val foo: Int
-15 get() = 3
+9 override val foo: Int (in B)
+10 get() = 2 (in B.foo: Int)
+14 override val foo: Int (in C)
+15 get() = 3 (in C.foo: Int)
diff --git a/idea/testData/slicer/inflow/overridingPropertyResult.leafGroups.txt b/idea/testData/slicer/inflow/overridingPropertyResult.leafGroups.txt
index 0681ba65ca8d9..4b6a203583521 100644
--- a/idea/testData/slicer/inflow/overridingPropertyResult.leafGroups.txt
+++ b/idea/testData/slicer/inflow/overridingPropertyResult.leafGroups.txt
@@ -1,17 +1,16 @@
-8 override val foo = 2
-17 val y = b.foo
-17 val y = b.foo
-8 override val foo = 2
-8 override val foo = 2
+8 override val foo = 2 (in B.foo: Int)
+17 val y = b.foo (in test(A, B, C))
+17 val y = b.foo (in test(A, B, C))
+8 override val foo = 2 (in B)
+8 override val foo = 2 (in B.foo: Int)
-12 override val foo = 3
-17 val y = b.foo
-17 val y = b.foo
-12 override val foo = 3
-12 override val foo = 3
+12 override val foo = 3 (in C.foo: Int)
+17 val y = b.foo (in test(A, B, C))
+17 val y = b.foo (in test(A, B, C))
+12 override val foo = 3 (in C)
+12 override val foo = 3 (in C.foo: Int)
3 return 5;
-17 val y = b.foo
-17 val y = b.foo
+17 val y = b.foo (in test(A, B, C))
+17 val y = b.foo (in test(A, B, C))
3 return 5;
-
diff --git a/idea/testData/slicer/inflow/overridingPropertyResult.nullnessGroups.txt b/idea/testData/slicer/inflow/overridingPropertyResult.nullnessGroups.txt
index 074eced5db857..69c3fedf21fac 100644
--- a/idea/testData/slicer/inflow/overridingPropertyResult.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/overridingPropertyResult.nullnessGroups.txt
@@ -1,3 +1,3 @@
[NotNull Values]
-17 val y = b.foo
-17 val y = b.foo
+17 val y = b.foo (in test(A, B, C))
+17 val y = b.foo (in test(A, B, C))
diff --git a/idea/testData/slicer/inflow/overridingPropertyResult.results.txt b/idea/testData/slicer/inflow/overridingPropertyResult.results.txt
index df8d6a2152bba..6617650b676a0 100644
--- a/idea/testData/slicer/inflow/overridingPropertyResult.results.txt
+++ b/idea/testData/slicer/inflow/overridingPropertyResult.results.txt
@@ -1,7 +1,7 @@
-17 val y = b.foo
-17 val y = b.foo
+17 val y = b.foo (in test(A, B, C))
+17 val y = b.foo (in test(A, B, C))
3 return 5;
-8 override val foo = 2
-8 override val foo = 2
-12 override val foo = 3
-12 override val foo = 3
+8 override val foo = 2 (in B)
+8 override val foo = 2 (in B.foo: Int)
+12 override val foo = 3 (in C)
+12 override val foo = 3 (in C.foo: Int)
diff --git a/idea/testData/slicer/inflow/primaryConstructorParameter.leafGroups.txt b/idea/testData/slicer/inflow/primaryConstructorParameter.leafGroups.txt
index 380b2bb4af28b..c3b6b1f502d33 100644
--- a/idea/testData/slicer/inflow/primaryConstructorParameter.leafGroups.txt
+++ b/idea/testData/slicer/inflow/primaryConstructorParameter.leafGroups.txt
@@ -1,13 +1,12 @@
2 D(int n, String s) {
-4 open class A @JvmOverloads constructor(n: Int, s: String = "???")
+4 open class A @JvmOverloads constructor(n: Int, s: String = "???") (in A(Int, String = ...))
3 super(n, s);
2 D(int n, String s) {
-6 class B1: A(1)
-4 open class A @JvmOverloads constructor(n: Int, s: String = "???")
-6 class B1: A(1)
+6 class B1: A(1) (in B1)
+4 open class A @JvmOverloads constructor(n: Int, s: String = "???") (in A(Int, String = ...))
+6 class B1: A(1) (in B1)
11 new A(1);
-4 open class A @JvmOverloads constructor(n: Int, s: String = "???")
+4 open class A @JvmOverloads constructor(n: Int, s: String = "???") (in A(Int, String = ...))
11 new A(1);
-
diff --git a/idea/testData/slicer/inflow/primaryConstructorParameter.nullnessGroups.txt b/idea/testData/slicer/inflow/primaryConstructorParameter.nullnessGroups.txt
index c9c3506df0549..954332e140c85 100644
--- a/idea/testData/slicer/inflow/primaryConstructorParameter.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/primaryConstructorParameter.nullnessGroups.txt
@@ -1,4 +1,3 @@
[NotNull Values]
-4 open class A @JvmOverloads constructor(n: Int, s: String = "???")
-4 open class A @JvmOverloads constructor(n: Int, s: String = "???")
-
+4 open class A @JvmOverloads constructor(n: Int, s: String = "???") (in A(Int, String = ...))
+4 open class A @JvmOverloads constructor(n: Int, s: String = "???") (in A(Int, String = ...))
diff --git a/idea/testData/slicer/inflow/primaryConstructorParameter.results.txt b/idea/testData/slicer/inflow/primaryConstructorParameter.results.txt
index 3f122ab4b7e49..fe3720a1f7fe0 100644
--- a/idea/testData/slicer/inflow/primaryConstructorParameter.results.txt
+++ b/idea/testData/slicer/inflow/primaryConstructorParameter.results.txt
@@ -1,17 +1,17 @@
-4 open class A @JvmOverloads constructor(n: Int, s: String = "???")
+4 open class A @JvmOverloads constructor(n: Int, s: String = "???") (in A(Int, String = ...))
3 super(n, s);
2 D(int n, String s) {
7 super(n);
6 D(int n) {
-6 class B1: A(1)
-7 class B2: A(1, "2")
-8 class B3: A(1, s = "2")
+6 class B1: A(1) (in B1)
+7 class B2: A(1, "2") (in B2)
+8 class B3: A(1, s = "2") (in B3)
11 new A(1);
12 new A(1, "2");
-9 class B4: A(n = 1, s = "2")
-10 class B5: A(s = "2", n = 1)
-13 A(1)
-14 A(1, "2")
-15 A(1, s = "2")
-16 A(n = 1, s = "2")
-17 A(s = "2", n = 1)
+9 class B4: A(n = 1, s = "2") (in B4)
+10 class B5: A(s = "2", n = 1) (in B5)
+13 A(1) (in test())
+14 A(1, "2") (in test())
+15 A(1, s = "2") (in test())
+16 A(n = 1, s = "2") (in test())
+17 A(s = "2", n = 1) (in test())
diff --git a/idea/testData/slicer/inflow/primaryConstructorParameterWithDefault.leafGroups.txt b/idea/testData/slicer/inflow/primaryConstructorParameterWithDefault.leafGroups.txt
index a022f90672923..e6e65eb01c3a7 100644
--- a/idea/testData/slicer/inflow/primaryConstructorParameterWithDefault.leafGroups.txt
+++ b/idea/testData/slicer/inflow/primaryConstructorParameterWithDefault.leafGroups.txt
@@ -1,17 +1,16 @@
-7 class B2: A(1, "2")
-4 open class A @JvmOverloads constructor(n: Int, s: String = "???")
-7 class B2: A(1, "2")
+7 class B2: A(1, "2") (in B2)
+4 open class A @JvmOverloads constructor(n: Int, s: String = "???") (in A(Int, String = ...))
+7 class B2: A(1, "2") (in B2)
12 new A(1, "2");
-4 open class A @JvmOverloads constructor(n: Int, s: String = "???")
+4 open class A @JvmOverloads constructor(n: Int, s: String = "???") (in A(Int, String = ...))
12 new A(1, "2");
2 D(int n, String s) {
-4 open class A @JvmOverloads constructor(n: Int, s: String = "???")
+4 open class A @JvmOverloads constructor(n: Int, s: String = "???") (in A(Int, String = ...))
3 super(n, s);
2 D(int n, String s) {
-4 open class A @JvmOverloads constructor(n: Int, s: String = "???")
-4 open class A @JvmOverloads constructor(n: Int, s: String = "???")
-4 open class A @JvmOverloads constructor(n: Int, s: String = "???")
-
+4 open class A @JvmOverloads constructor(n: Int, s: String = "???") (in A(Int, String = ...))
+4 open class A @JvmOverloads constructor(n: Int, s: String = "???") (in A(Int, String = ...))
+4 open class A @JvmOverloads constructor(n: Int, s: String = "???") (in A(Int, String = ...))
diff --git a/idea/testData/slicer/inflow/primaryConstructorParameterWithDefault.nullnessGroups.txt b/idea/testData/slicer/inflow/primaryConstructorParameterWithDefault.nullnessGroups.txt
index 25ce322b70251..c46b918481fbc 100644
--- a/idea/testData/slicer/inflow/primaryConstructorParameterWithDefault.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/primaryConstructorParameterWithDefault.nullnessGroups.txt
@@ -1,4 +1,3 @@
[NotNull Values]
-4 open class A @JvmOverloads constructor(n: Int, s: String = "???")
-4 open class A @JvmOverloads constructor(n: Int, s: String = "???")
-
+4 open class A @JvmOverloads constructor(n: Int, s: String = "???") (in A(Int, String = ...))
+4 open class A @JvmOverloads constructor(n: Int, s: String = "???") (in A(Int, String = ...))
diff --git a/idea/testData/slicer/inflow/primaryConstructorParameterWithDefault.results.txt b/idea/testData/slicer/inflow/primaryConstructorParameterWithDefault.results.txt
index 8186f0bbfd99b..3f444da772486 100644
--- a/idea/testData/slicer/inflow/primaryConstructorParameterWithDefault.results.txt
+++ b/idea/testData/slicer/inflow/primaryConstructorParameterWithDefault.results.txt
@@ -1,13 +1,13 @@
-4 open class A @JvmOverloads constructor(n: Int, s: String = "???")
+4 open class A @JvmOverloads constructor(n: Int, s: String = "???") (in A(Int, String = ...))
3 super(n, s);
2 D(int n, String s) {
-4 open class A @JvmOverloads constructor(n: Int, s: String = "???")
-7 class B2: A(1, "2")
-8 class B3: A(1, s = "2")
+4 open class A @JvmOverloads constructor(n: Int, s: String = "???") (in A(Int, String = ...))
+7 class B2: A(1, "2") (in B2)
+8 class B3: A(1, s = "2") (in B3)
12 new A(1, "2");
-9 class B4: A(n = 1, s = "2")
-10 class B5: A(s = "2", n = 1)
-14 A(1, "2")
-15 A(1, s = "2")
-16 A(n = 1, s = "2")
-17 A(s = "2", n = 1)
+9 class B4: A(n = 1, s = "2") (in B4)
+10 class B5: A(s = "2", n = 1) (in B5)
+14 A(1, "2") (in test())
+15 A(1, s = "2") (in test())
+16 A(n = 1, s = "2") (in test())
+17 A(s = "2", n = 1) (in test())
diff --git a/idea/testData/slicer/inflow/propertyInInterface.leafGroups.txt b/idea/testData/slicer/inflow/propertyInInterface.leafGroups.txt
index c4a451fa46a7f..9e4a0beaabf9c 100644
--- a/idea/testData/slicer/inflow/propertyInInterface.leafGroups.txt
+++ b/idea/testData/slicer/inflow/propertyInInterface.leafGroups.txt
@@ -1,11 +1,11 @@
-8 override var prop: Int = 0
-13 val v = c.prop
-13 val v = c.prop
-8 override var prop: Int = 0
-8 override var prop: Int = 0
+8 override var prop: Int = 0 (in C.prop: Int)
+13 val v = c.prop (in foo(I, C))
+13 val v = c.prop (in foo(I, C))
+8 override var prop: Int = 0 (in C)
+8 override var prop: Int = 0 (in C.prop: Int)
-12 i.prop = 10
-13 val v = c.prop
-13 val v = c.prop
-8 override var prop: Int = 0
-12 i.prop = 10
+12 i.prop = 10 (in foo(I, C))
+13 val v = c.prop (in foo(I, C))
+13 val v = c.prop (in foo(I, C))
+8 override var prop: Int = 0 (in C)
+12 i.prop = 10 (in foo(I, C))
diff --git a/idea/testData/slicer/inflow/propertyInInterface.nullnessGroups.txt b/idea/testData/slicer/inflow/propertyInInterface.nullnessGroups.txt
index 6d866c042811e..da6cd5c268867 100644
--- a/idea/testData/slicer/inflow/propertyInInterface.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/propertyInInterface.nullnessGroups.txt
@@ -1,3 +1,3 @@
[NotNull Values]
-13 val v = c.prop
-13 val v = c.prop
+13 val v = c.prop (in foo(I, C))
+13 val v = c.prop (in foo(I, C))
diff --git a/idea/testData/slicer/inflow/propertyInInterface.results.txt b/idea/testData/slicer/inflow/propertyInInterface.results.txt
index 1f1df3a99f61f..c48467587c4e1 100644
--- a/idea/testData/slicer/inflow/propertyInInterface.results.txt
+++ b/idea/testData/slicer/inflow/propertyInInterface.results.txt
@@ -1,5 +1,5 @@
-13 val v = c.prop
-13 val v = c.prop
-8 override var prop: Int = 0
-8 override var prop: Int = 0
-12 i.prop = 10
+13 val v = c.prop (in foo(I, C))
+13 val v = c.prop (in foo(I, C))
+8 override var prop: Int = 0 (in C)
+8 override var prop: Int = 0 (in C.prop: Int)
+12 i.prop = 10 (in foo(I, C))
diff --git a/idea/testData/slicer/inflow/qualifiedAssignmentsForQualifiedRef.leafGroups.txt b/idea/testData/slicer/inflow/qualifiedAssignmentsForQualifiedRef.leafGroups.txt
index 1e804b6d30619..2e334ec150b41 100644
--- a/idea/testData/slicer/inflow/qualifiedAssignmentsForQualifiedRef.leafGroups.txt
+++ b/idea/testData/slicer/inflow/qualifiedAssignmentsForQualifiedRef.leafGroups.txt
@@ -1,22 +1,21 @@
-13 val a = AClass("main: hello")
-15 val v = "Now my name is '${a.name}'"
-4 var name : String = name1
-4 var name : String = name1
-3 class AClass(name1: String){
-13 val a = AClass("main: hello")
+13 val a = AClass("main: hello") (in main(Array))
+15 val v = "Now my name is '${a.name}'" (in main(Array))
+4 var name : String = name1 (in AClass)
+4 var name : String = name1 (in AClass.name: String)
+3 class AClass(name1: String){ (in AClass(String))
+13 val a = AClass("main: hello") (in main(Array))
-14 a.name = "main: bye"
-15 val v = "Now my name is '${a.name}'"
-4 var name : String = name1
-14 a.name = "main: bye"
+14 a.name = "main: bye" (in main(Array))
+15 val v = "Now my name is '${a.name}'" (in main(Array))
+4 var name : String = name1 (in AClass)
+14 a.name = "main: bye" (in main(Array))
-6 name = "uses: bye"
-15 val v = "Now my name is '${a.name}'"
-4 var name : String = name1
-6 name = "uses: bye"
-
-7 this.name = "uses: after this"
-15 val v = "Now my name is '${a.name}'"
-4 var name : String = name1
-7 this.name = "uses: after this"
+6 name = "uses: bye" (in AClass.uses())
+15 val v = "Now my name is '${a.name}'" (in main(Array))
+4 var name : String = name1 (in AClass)
+6 name = "uses: bye" (in AClass.uses())
+7 this.name = "uses: after this" (in AClass.uses())
+15 val v = "Now my name is '${a.name}'" (in main(Array))
+4 var name : String = name1 (in AClass)
+7 this.name = "uses: after this" (in AClass.uses())
diff --git a/idea/testData/slicer/inflow/qualifiedAssignmentsForQualifiedRef.nullnessGroups.txt b/idea/testData/slicer/inflow/qualifiedAssignmentsForQualifiedRef.nullnessGroups.txt
index caecd13d4e0ee..604552c9bc95e 100644
--- a/idea/testData/slicer/inflow/qualifiedAssignmentsForQualifiedRef.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/qualifiedAssignmentsForQualifiedRef.nullnessGroups.txt
@@ -1,4 +1,3 @@
[NotNull Values]
-15 val v = "Now my name is '${a.name}'"
-15 val v = "Now my name is '${a.name}'"
-
+15 val v = "Now my name is '${a.name}'" (in main(Array))
+15 val v = "Now my name is '${a.name}'" (in main(Array))
diff --git a/idea/testData/slicer/inflow/qualifiedAssignmentsForQualifiedRef.results.txt b/idea/testData/slicer/inflow/qualifiedAssignmentsForQualifiedRef.results.txt
index 8016cb260018b..0a63959cf20fc 100644
--- a/idea/testData/slicer/inflow/qualifiedAssignmentsForQualifiedRef.results.txt
+++ b/idea/testData/slicer/inflow/qualifiedAssignmentsForQualifiedRef.results.txt
@@ -1,8 +1,8 @@
-15 val v = "Now my name is '${a.name}'"
-4 var name : String = name1
-4 var name : String = name1
-3 class AClass(name1: String){
-13 val a = AClass("main: hello")
-6 name = "uses: bye"
-7 this.name = "uses: after this"
-14 a.name = "main: bye"
+15 val v = "Now my name is '${a.name}'" (in main(Array))
+4 var name : String = name1 (in AClass)
+4 var name : String = name1 (in AClass.name: String)
+3 class AClass(name1: String){ (in AClass(String))
+13 val a = AClass("main: hello") (in main(Array))
+6 name = "uses: bye" (in AClass.uses())
+7 this.name = "uses: after this" (in AClass.uses())
+14 a.name = "main: bye" (in main(Array))
diff --git a/idea/testData/slicer/inflow/qualifiedAssignmentsForSimpleRef.leafGroups.txt b/idea/testData/slicer/inflow/qualifiedAssignmentsForSimpleRef.leafGroups.txt
index 0f5c0dab4eab9..a96a17ca5d1d8 100644
--- a/idea/testData/slicer/inflow/qualifiedAssignmentsForSimpleRef.leafGroups.txt
+++ b/idea/testData/slicer/inflow/qualifiedAssignmentsForSimpleRef.leafGroups.txt
@@ -1,22 +1,21 @@
-13 val a = AClass("main: hello")
-8 val v = "And now my name is '$name'"
-4 var name : String = name1
-4 var name : String = name1
-3 class AClass(name1: String){
-13 val a = AClass("main: hello")
+13 val a = AClass("main: hello") (in main(Array))
+8 val v = "And now my name is '$name'" (in AClass.uses())
+4 var name : String = name1 (in AClass)
+4 var name : String = name1 (in AClass.name: String)
+3 class AClass(name1: String){ (in AClass(String))
+13 val a = AClass("main: hello") (in main(Array))
-14 a.name = "main: bye"
-8 val v = "And now my name is '$name'"
-4 var name : String = name1
-14 a.name = "main: bye"
+14 a.name = "main: bye" (in main(Array))
+8 val v = "And now my name is '$name'" (in AClass.uses())
+4 var name : String = name1 (in AClass)
+14 a.name = "main: bye" (in main(Array))
-6 name = "uses: bye"
-8 val v = "And now my name is '$name'"
-4 var name : String = name1
-6 name = "uses: bye"
-
-7 this.name = "uses: after this"
-8 val v = "And now my name is '$name'"
-4 var name : String = name1
-7 this.name = "uses: after this"
+6 name = "uses: bye" (in AClass.uses())
+8 val v = "And now my name is '$name'" (in AClass.uses())
+4 var name : String = name1 (in AClass)
+6 name = "uses: bye" (in AClass.uses())
+7 this.name = "uses: after this" (in AClass.uses())
+8 val v = "And now my name is '$name'" (in AClass.uses())
+4 var name : String = name1 (in AClass)
+7 this.name = "uses: after this" (in AClass.uses())
diff --git a/idea/testData/slicer/inflow/qualifiedAssignmentsForSimpleRef.nullnessGroups.txt b/idea/testData/slicer/inflow/qualifiedAssignmentsForSimpleRef.nullnessGroups.txt
index 2afdcc3cabca3..1705ab3764c5d 100644
--- a/idea/testData/slicer/inflow/qualifiedAssignmentsForSimpleRef.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/qualifiedAssignmentsForSimpleRef.nullnessGroups.txt
@@ -1,4 +1,3 @@
[NotNull Values]
-8 val v = "And now my name is '$name'"
-8 val v = "And now my name is '$name'"
-
+8 val v = "And now my name is '$name'" (in AClass.uses())
+8 val v = "And now my name is '$name'" (in AClass.uses())
diff --git a/idea/testData/slicer/inflow/qualifiedAssignmentsForSimpleRef.results.txt b/idea/testData/slicer/inflow/qualifiedAssignmentsForSimpleRef.results.txt
index db0e3a06bd455..463a3eb562c01 100644
--- a/idea/testData/slicer/inflow/qualifiedAssignmentsForSimpleRef.results.txt
+++ b/idea/testData/slicer/inflow/qualifiedAssignmentsForSimpleRef.results.txt
@@ -1,8 +1,8 @@
-8 val v = "And now my name is '$name'"
-4 var name : String = name1
-4 var name : String = name1
-3 class AClass(name1: String){
-13 val a = AClass("main: hello")
-6 name = "uses: bye"
-7 this.name = "uses: after this"
-14 a.name = "main: bye"
+8 val v = "And now my name is '$name'" (in AClass.uses())
+4 var name : String = name1 (in AClass)
+4 var name : String = name1 (in AClass.name: String)
+3 class AClass(name1: String){ (in AClass(String))
+13 val a = AClass("main: hello") (in main(Array))
+6 name = "uses: bye" (in AClass.uses())
+7 this.name = "uses: after this" (in AClass.uses())
+14 a.name = "main: bye" (in main(Array))
diff --git a/idea/testData/slicer/inflow/safeCast.leafGroups.txt b/idea/testData/slicer/inflow/safeCast.leafGroups.txt
index ed1d77f390ccd..214d22d11f5c3 100644
--- a/idea/testData/slicer/inflow/safeCast.leafGroups.txt
+++ b/idea/testData/slicer/inflow/safeCast.leafGroups.txt
@@ -1,6 +1,5 @@
-3 fun test(o: Any) {
-4 val x = o as? String
-4 val x = o as? String
-4 val x = o as? String
-3 fun test(o: Any) {
-
+3 fun test(o: Any) { (in test(Any))
+4 val x = o as? String (in test(Any))
+4 val x = o as? String (in test(Any))
+4 val x = o as? String (in test(Any))
+3 fun test(o: Any) { (in test(Any))
diff --git a/idea/testData/slicer/inflow/safeCast.nullnessGroups.txt b/idea/testData/slicer/inflow/safeCast.nullnessGroups.txt
index 32e5d9b963354..a05ad699ff0fc 100644
--- a/idea/testData/slicer/inflow/safeCast.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/safeCast.nullnessGroups.txt
@@ -1,6 +1,5 @@
[NotNull Values]
-4 val x = o as? String
-4 val x = o as? String
-4 val x = o as? String
-4 val x = o as? String
-
+4 val x = o as? String (in test(Any))
+4 val x = o as? String (in test(Any))
+4 val x = o as? String (in test(Any))
+4 val x = o as? String (in test(Any))
diff --git a/idea/testData/slicer/inflow/safeCast.results.txt b/idea/testData/slicer/inflow/safeCast.results.txt
index 672b68824c173..7ee1d07e4bf9b 100644
--- a/idea/testData/slicer/inflow/safeCast.results.txt
+++ b/idea/testData/slicer/inflow/safeCast.results.txt
@@ -1,4 +1,4 @@
-4 val x = o as? String
-4 val x = o as? String
-4 val x = o as? String
-3 fun test(o: Any) {
+4 val x = o as? String (in test(Any))
+4 val x = o as? String (in test(Any))
+4 val x = o as? String (in test(Any))
+3 fun test(o: Any) { (in test(Any))
diff --git a/idea/testData/slicer/inflow/secondaryConstructorParameter.leafGroups.txt b/idea/testData/slicer/inflow/secondaryConstructorParameter.leafGroups.txt
index b3c18761878ae..c884c576426d8 100644
--- a/idea/testData/slicer/inflow/secondaryConstructorParameter.leafGroups.txt
+++ b/idea/testData/slicer/inflow/secondaryConstructorParameter.leafGroups.txt
@@ -1,13 +1,12 @@
2 D(int n, String s) {
-5 @JvmOverloads constructor(n: Int, s: String = "???")
+5 @JvmOverloads constructor(n: Int, s: String = "???") (in constructor A(Int, String = ...))
3 super(n, s);
2 D(int n, String s) {
-8 class B1: A(1)
-5 @JvmOverloads constructor(n: Int, s: String = "???")
-8 class B1: A(1)
+8 class B1: A(1) (in B1)
+5 @JvmOverloads constructor(n: Int, s: String = "???") (in constructor A(Int, String = ...))
+8 class B1: A(1) (in B1)
11 new A(1);
-5 @JvmOverloads constructor(n: Int, s: String = "???")
+5 @JvmOverloads constructor(n: Int, s: String = "???") (in constructor A(Int, String = ...))
11 new A(1);
-
diff --git a/idea/testData/slicer/inflow/secondaryConstructorParameter.nullnessGroups.txt b/idea/testData/slicer/inflow/secondaryConstructorParameter.nullnessGroups.txt
index 5ea9e70910a91..f521a1344bfa0 100644
--- a/idea/testData/slicer/inflow/secondaryConstructorParameter.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/secondaryConstructorParameter.nullnessGroups.txt
@@ -1,4 +1,3 @@
[NotNull Values]
-5 @JvmOverloads constructor(n: Int, s: String = "???")
-5 @JvmOverloads constructor(n: Int, s: String = "???")
-
+5 @JvmOverloads constructor(n: Int, s: String = "???") (in constructor A(Int, String = ...))
+5 @JvmOverloads constructor(n: Int, s: String = "???") (in constructor A(Int, String = ...))
diff --git a/idea/testData/slicer/inflow/secondaryConstructorParameter.results.txt b/idea/testData/slicer/inflow/secondaryConstructorParameter.results.txt
index e5aa188294994..b86396f8fe591 100644
--- a/idea/testData/slicer/inflow/secondaryConstructorParameter.results.txt
+++ b/idea/testData/slicer/inflow/secondaryConstructorParameter.results.txt
@@ -1,17 +1,17 @@
-5 @JvmOverloads constructor(n: Int, s: String = "???")
+5 @JvmOverloads constructor(n: Int, s: String = "???") (in constructor A(Int, String = ...))
3 super(n, s);
2 D(int n, String s) {
7 super(n);
6 D(int n) {
-8 class B1: A(1)
-9 class B2: A(1, "2")
+8 class B1: A(1) (in B1)
+9 class B2: A(1, "2") (in B2)
11 new A(1);
-10 class B3: A(1, s = "2")
+10 class B3: A(1, s = "2") (in B3)
12 new A(1, "2");
-11 class B4: A(n = 1, s = "2")
-12 class B5: A(s = "2", n = 1)
-15 A(1)
-16 A(1, "2")
-17 A(1, s = "2")
-18 A(n = 1, s = "2")
-19 A(s = "2", n = 1)
+11 class B4: A(n = 1, s = "2") (in B4)
+12 class B5: A(s = "2", n = 1) (in B5)
+15 A(1) (in test())
+16 A(1, "2") (in test())
+17 A(1, s = "2") (in test())
+18 A(n = 1, s = "2") (in test())
+19 A(s = "2", n = 1) (in test())
diff --git a/idea/testData/slicer/inflow/secondaryConstructorParameterWithDefault.leafGroups.txt b/idea/testData/slicer/inflow/secondaryConstructorParameterWithDefault.leafGroups.txt
index fd7f749547d82..90f60061a66ca 100644
--- a/idea/testData/slicer/inflow/secondaryConstructorParameterWithDefault.leafGroups.txt
+++ b/idea/testData/slicer/inflow/secondaryConstructorParameterWithDefault.leafGroups.txt
@@ -1,17 +1,16 @@
-9 class B2: A(1, "2")
-5 @JvmOverloads constructor(n: Int, s: String = "???")
-9 class B2: A(1, "2")
+9 class B2: A(1, "2") (in B2)
+5 @JvmOverloads constructor(n: Int, s: String = "???") (in constructor A(Int, String = ...))
+9 class B2: A(1, "2") (in B2)
12 new A(1, "2");
-5 @JvmOverloads constructor(n: Int, s: String = "???")
+5 @JvmOverloads constructor(n: Int, s: String = "???") (in constructor A(Int, String = ...))
12 new A(1, "2");
2 D(int n, String s) {
-5 @JvmOverloads constructor(n: Int, s: String = "???")
+5 @JvmOverloads constructor(n: Int, s: String = "???") (in constructor A(Int, String = ...))
3 super(n, s);
2 D(int n, String s) {
-5 @JvmOverloads constructor(n: Int, s: String = "???")
-5 @JvmOverloads constructor(n: Int, s: String = "???")
-5 @JvmOverloads constructor(n: Int, s: String = "???")
-
+5 @JvmOverloads constructor(n: Int, s: String = "???") (in constructor A(Int, String = ...))
+5 @JvmOverloads constructor(n: Int, s: String = "???") (in constructor A(Int, String = ...))
+5 @JvmOverloads constructor(n: Int, s: String = "???") (in constructor A(Int, String = ...))
diff --git a/idea/testData/slicer/inflow/secondaryConstructorParameterWithDefault.nullnessGroups.txt b/idea/testData/slicer/inflow/secondaryConstructorParameterWithDefault.nullnessGroups.txt
index 40daf1481b9b5..3b6bd4ab4e5c4 100644
--- a/idea/testData/slicer/inflow/secondaryConstructorParameterWithDefault.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/secondaryConstructorParameterWithDefault.nullnessGroups.txt
@@ -1,4 +1,3 @@
[NotNull Values]
-5 @JvmOverloads constructor(n: Int, s: String = "???")
-5 @JvmOverloads constructor(n: Int, s: String = "???")
-
+5 @JvmOverloads constructor(n: Int, s: String = "???") (in constructor A(Int, String = ...))
+5 @JvmOverloads constructor(n: Int, s: String = "???") (in constructor A(Int, String = ...))
diff --git a/idea/testData/slicer/inflow/secondaryConstructorParameterWithDefault.results.txt b/idea/testData/slicer/inflow/secondaryConstructorParameterWithDefault.results.txt
index e35375b7ebc74..219cb703e1830 100644
--- a/idea/testData/slicer/inflow/secondaryConstructorParameterWithDefault.results.txt
+++ b/idea/testData/slicer/inflow/secondaryConstructorParameterWithDefault.results.txt
@@ -1,13 +1,13 @@
-5 @JvmOverloads constructor(n: Int, s: String = "???")
+5 @JvmOverloads constructor(n: Int, s: String = "???") (in constructor A(Int, String = ...))
3 super(n, s);
2 D(int n, String s) {
-5 @JvmOverloads constructor(n: Int, s: String = "???")
-9 class B2: A(1, "2")
-10 class B3: A(1, s = "2")
+5 @JvmOverloads constructor(n: Int, s: String = "???") (in constructor A(Int, String = ...))
+9 class B2: A(1, "2") (in B2)
+10 class B3: A(1, s = "2") (in B3)
12 new A(1, "2");
-11 class B4: A(n = 1, s = "2")
-12 class B5: A(s = "2", n = 1)
-16 A(1, "2")
-17 A(1, s = "2")
-18 A(n = 1, s = "2")
-19 A(s = "2", n = 1)
+11 class B4: A(n = 1, s = "2") (in B4)
+12 class B5: A(s = "2", n = 1) (in B5)
+16 A(1, "2") (in test())
+17 A(1, s = "2") (in test())
+18 A(n = 1, s = "2") (in test())
+19 A(s = "2", n = 1) (in test())
diff --git a/idea/testData/slicer/inflow/settersViaDelegateForQualifiedRef.leafGroups.txt b/idea/testData/slicer/inflow/settersViaDelegateForQualifiedRef.leafGroups.txt
index 43bfcbc413dc0..536cdbab42256 100644
--- a/idea/testData/slicer/inflow/settersViaDelegateForQualifiedRef.leafGroups.txt
+++ b/idea/testData/slicer/inflow/settersViaDelegateForQualifiedRef.leafGroups.txt
@@ -1,30 +1,29 @@
-6 private var _value: String = ""
-27 println("My name is '${a.name}'")
-14 var name by Delegate()
-7 operator fun getValue(thisRef: Any?, property: KProperty<*>) = _value
-7 operator fun getValue(thisRef: Any?, property: KProperty<*>) = _value
-6 private var _value: String = ""
-6 private var _value: String = ""
+6 private var _value: String = "" (in Delegate._value: String)
+27 println("My name is '${a.name}'") (in main(Array))
+14 var name by Delegate() (in AClass)
+7 operator fun getValue(thisRef: Any?, property: KProperty<*>) = _value (in Delegate)
+7 operator fun getValue(thisRef: Any?, property: KProperty<*>) = _value (in Delegate.getValue(Any?, KProperty<*>))
+6 private var _value: String = "" (in Delegate)
+6 private var _value: String = "" (in Delegate._value: String)
-20 name = "bye"
-27 println("My name is '${a.name}'")
-14 var name by Delegate()
-7 operator fun getValue(thisRef: Any?, property: KProperty<*>) = _value
-7 operator fun getValue(thisRef: Any?, property: KProperty<*>) = _value
-6 private var _value: String = ""
-9 _value = value
-8 operator fun setValue(thisRef: Any?, property: KProperty<*>, value: String) {
-20 name = "bye"
-
-26 val a = AClass("hello")
-27 println("My name is '${a.name}'")
-14 var name by Delegate()
-7 operator fun getValue(thisRef: Any?, property: KProperty<*>) = _value
-7 operator fun getValue(thisRef: Any?, property: KProperty<*>) = _value
-6 private var _value: String = ""
-9 _value = value
-8 operator fun setValue(thisRef: Any?, property: KProperty<*>, value: String) {
-16 name = name1
-13 class AClass(name1: String){
-26 val a = AClass("hello")
+20 name = "bye" (in AClass.uses())
+27 println("My name is '${a.name}'") (in main(Array))
+14 var name by Delegate() (in AClass)
+7 operator fun getValue(thisRef: Any?, property: KProperty<*>) = _value (in Delegate)
+7 operator fun getValue(thisRef: Any?, property: KProperty<*>) = _value (in Delegate.getValue(Any?, KProperty<*>))
+6 private var _value: String = "" (in Delegate)
+9 _value = value (in Delegate.setValue(Any?, KProperty<*>, String))
+8 operator fun setValue(thisRef: Any?, property: KProperty<*>, value: String) { (in Delegate.setValue(Any?, KProperty<*>, String))
+20 name = "bye" (in AClass.uses())
+26 val a = AClass("hello") (in main(Array))
+27 println("My name is '${a.name}'") (in main(Array))
+14 var name by Delegate() (in AClass)
+7 operator fun getValue(thisRef: Any?, property: KProperty<*>) = _value (in Delegate)
+7 operator fun getValue(thisRef: Any?, property: KProperty<*>) = _value (in Delegate.getValue(Any?, KProperty<*>))
+6 private var _value: String = "" (in Delegate)
+9 _value = value (in Delegate.setValue(Any?, KProperty<*>, String))
+8 operator fun setValue(thisRef: Any?, property: KProperty<*>, value: String) { (in Delegate.setValue(Any?, KProperty<*>, String))
+16 name = name1 (in AClass)
+13 class AClass(name1: String){ (in AClass(String))
+26 val a = AClass("hello") (in main(Array))
diff --git a/idea/testData/slicer/inflow/settersViaDelegateForQualifiedRef.nullnessGroups.txt b/idea/testData/slicer/inflow/settersViaDelegateForQualifiedRef.nullnessGroups.txt
index b0b217cfa7af0..41cc60724f0f8 100644
--- a/idea/testData/slicer/inflow/settersViaDelegateForQualifiedRef.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/settersViaDelegateForQualifiedRef.nullnessGroups.txt
@@ -1,4 +1,3 @@
[NotNull Values]
-27 println("My name is '${a.name}'")
-27 println("My name is '${a.name}'")
-
+27 println("My name is '${a.name}'") (in main(Array))
+27 println("My name is '${a.name}'") (in main(Array))
diff --git a/idea/testData/slicer/inflow/settersViaDelegateForQualifiedRef.results.txt b/idea/testData/slicer/inflow/settersViaDelegateForQualifiedRef.results.txt
index e484fbf45df99..70d521b84c5b9 100644
--- a/idea/testData/slicer/inflow/settersViaDelegateForQualifiedRef.results.txt
+++ b/idea/testData/slicer/inflow/settersViaDelegateForQualifiedRef.results.txt
@@ -1,12 +1,12 @@
-27 println("My name is '${a.name}'")
-14 var name by Delegate()
-7 operator fun getValue(thisRef: Any?, property: KProperty<*>) = _value
-7 operator fun getValue(thisRef: Any?, property: KProperty<*>) = _value
-6 private var _value: String = ""
-6 private var _value: String = ""
-9 _value = value
-8 operator fun setValue(thisRef: Any?, property: KProperty<*>, value: String) {
-16 name = name1
-13 class AClass(name1: String){
-26 val a = AClass("hello")
-20 name = "bye"
+27 println("My name is '${a.name}'") (in main(Array))
+14 var name by Delegate() (in AClass)
+7 operator fun getValue(thisRef: Any?, property: KProperty<*>) = _value (in Delegate)
+7 operator fun getValue(thisRef: Any?, property: KProperty<*>) = _value (in Delegate.getValue(Any?, KProperty<*>))
+6 private var _value: String = "" (in Delegate)
+6 private var _value: String = "" (in Delegate._value: String)
+9 _value = value (in Delegate.setValue(Any?, KProperty<*>, String))
+8 operator fun setValue(thisRef: Any?, property: KProperty<*>, value: String) { (in Delegate.setValue(Any?, KProperty<*>, String))
+16 name = name1 (in AClass)
+13 class AClass(name1: String){ (in AClass(String))
+26 val a = AClass("hello") (in main(Array))
+20 name = "bye" (in AClass.uses())
diff --git a/idea/testData/slicer/inflow/settersViaDelegateForSimpleRef.leafGroups.txt b/idea/testData/slicer/inflow/settersViaDelegateForSimpleRef.leafGroups.txt
index 5c284d7051114..9ef577d26cb34 100644
--- a/idea/testData/slicer/inflow/settersViaDelegateForSimpleRef.leafGroups.txt
+++ b/idea/testData/slicer/inflow/settersViaDelegateForSimpleRef.leafGroups.txt
@@ -1,30 +1,29 @@
-7 private var _value: String = ""
-22 println("Now my name is '$name'")
-15 var name by Delegate()
-8 operator fun getValue(thisRef: Any?, property: KProperty<*>) = _value
-8 operator fun getValue(thisRef: Any?, property: KProperty<*>) = _value
-7 private var _value: String = ""
-7 private var _value: String = ""
+7 private var _value: String = "" (in Delegate._value: String)
+22 println("Now my name is '$name'") (in AClass.uses())
+15 var name by Delegate() (in AClass)
+8 operator fun getValue(thisRef: Any?, property: KProperty<*>) = _value (in Delegate)
+8 operator fun getValue(thisRef: Any?, property: KProperty<*>) = _value (in Delegate.getValue(Any?, KProperty<*>))
+7 private var _value: String = "" (in Delegate)
+7 private var _value: String = "" (in Delegate._value: String)
-21 name = "bye"
-22 println("Now my name is '$name'")
-15 var name by Delegate()
-8 operator fun getValue(thisRef: Any?, property: KProperty<*>) = _value
-8 operator fun getValue(thisRef: Any?, property: KProperty<*>) = _value
-7 private var _value: String = ""
-10 _value = value
-9 operator fun setValue(thisRef: Any?, property: KProperty<*>, value: String) {
-21 name = "bye"
-
-27 val a = AClass("hello")
-22 println("Now my name is '$name'")
-15 var name by Delegate()
-8 operator fun getValue(thisRef: Any?, property: KProperty<*>) = _value
-8 operator fun getValue(thisRef: Any?, property: KProperty<*>) = _value
-7 private var _value: String = ""
-10 _value = value
-9 operator fun setValue(thisRef: Any?, property: KProperty<*>, value: String) {
-17 name = name1
-14 class AClass(name1: String){
-27 val a = AClass("hello")
+21 name = "bye" (in AClass.uses())
+22 println("Now my name is '$name'") (in AClass.uses())
+15 var name by Delegate() (in AClass)
+8 operator fun getValue(thisRef: Any?, property: KProperty<*>) = _value (in Delegate)
+8 operator fun getValue(thisRef: Any?, property: KProperty<*>) = _value (in Delegate.getValue(Any?, KProperty<*>))
+7 private var _value: String = "" (in Delegate)
+10 _value = value (in Delegate.setValue(Any?, KProperty<*>, String))
+9 operator fun setValue(thisRef: Any?, property: KProperty<*>, value: String) { (in Delegate.setValue(Any?, KProperty<*>, String))
+21 name = "bye" (in AClass.uses())
+27 val a = AClass("hello") (in main(Array))
+22 println("Now my name is '$name'") (in AClass.uses())
+15 var name by Delegate() (in AClass)
+8 operator fun getValue(thisRef: Any?, property: KProperty<*>) = _value (in Delegate)
+8 operator fun getValue(thisRef: Any?, property: KProperty<*>) = _value (in Delegate.getValue(Any?, KProperty<*>))
+7 private var _value: String = "" (in Delegate)
+10 _value = value (in Delegate.setValue(Any?, KProperty<*>, String))
+9 operator fun setValue(thisRef: Any?, property: KProperty<*>, value: String) { (in Delegate.setValue(Any?, KProperty<*>, String))
+17 name = name1 (in AClass)
+14 class AClass(name1: String){ (in AClass(String))
+27 val a = AClass("hello") (in main(Array))
diff --git a/idea/testData/slicer/inflow/settersViaDelegateForSimpleRef.nullnessGroups.txt b/idea/testData/slicer/inflow/settersViaDelegateForSimpleRef.nullnessGroups.txt
index 05e1ce43eb195..4d59e3ae4babc 100644
--- a/idea/testData/slicer/inflow/settersViaDelegateForSimpleRef.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/settersViaDelegateForSimpleRef.nullnessGroups.txt
@@ -1,4 +1,3 @@
[NotNull Values]
-22 println("Now my name is '$name'")
-22 println("Now my name is '$name'")
-
+22 println("Now my name is '$name'") (in AClass.uses())
+22 println("Now my name is '$name'") (in AClass.uses())
diff --git a/idea/testData/slicer/inflow/settersViaDelegateForSimpleRef.results.txt b/idea/testData/slicer/inflow/settersViaDelegateForSimpleRef.results.txt
index e5b693711e8f5..cbe0884da82f6 100644
--- a/idea/testData/slicer/inflow/settersViaDelegateForSimpleRef.results.txt
+++ b/idea/testData/slicer/inflow/settersViaDelegateForSimpleRef.results.txt
@@ -1,12 +1,12 @@
-22 println("Now my name is '$name'")
-15 var name by Delegate()
-8 operator fun getValue(thisRef: Any?, property: KProperty<*>) = _value
-8 operator fun getValue(thisRef: Any?, property: KProperty<*>) = _value
-7 private var _value: String = ""
-7 private var _value: String = ""
-10 _value = value
-9 operator fun setValue(thisRef: Any?, property: KProperty<*>, value: String) {
-17 name = name1
-14 class AClass(name1: String){
-27 val a = AClass("hello")
-21 name = "bye"
+22 println("Now my name is '$name'") (in AClass.uses())
+15 var name by Delegate() (in AClass)
+8 operator fun getValue(thisRef: Any?, property: KProperty<*>) = _value (in Delegate)
+8 operator fun getValue(thisRef: Any?, property: KProperty<*>) = _value (in Delegate.getValue(Any?, KProperty<*>))
+7 private var _value: String = "" (in Delegate)
+7 private var _value: String = "" (in Delegate._value: String)
+10 _value = value (in Delegate.setValue(Any?, KProperty<*>, String))
+9 operator fun setValue(thisRef: Any?, property: KProperty<*>, value: String) { (in Delegate.setValue(Any?, KProperty<*>, String))
+17 name = name1 (in AClass)
+14 class AClass(name1: String){ (in AClass(String))
+27 val a = AClass("hello") (in main(Array))
+21 name = "bye" (in AClass.uses())
diff --git a/idea/testData/slicer/inflow/settersViaJavaDelegate.leafGroups.txt b/idea/testData/slicer/inflow/settersViaJavaDelegate.leafGroups.txt
index f4c5e828efedd..163df242d7b4f 100644
--- a/idea/testData/slicer/inflow/settersViaJavaDelegate.leafGroups.txt
+++ b/idea/testData/slicer/inflow/settersViaJavaDelegate.leafGroups.txt
@@ -1,14 +1,13 @@
6 private String _value = "";
-12 println("Now my name is '$name'")
-5 var name by D()
+12 println("Now my name is '$name'") (in AClass.uses())
+5 var name by D() (in AClass)
9 return _value;
6 private String _value = "";
-5 var name by D()
-12 println("Now my name is '$name'")
-5 var name by D()
+5 var name by D() (in AClass.name: String!)
+12 println("Now my name is '$name'") (in AClass.uses())
+5 var name by D() (in AClass)
9 return _value;
13 _value = value;
12 void setValue(@Nullable Object thisRef, @NotNull KProperty> property, @NotNull String value) {
-5 var name by D()
-
+5 var name by D() (in AClass.name: String!)
diff --git a/idea/testData/slicer/inflow/settersViaJavaDelegate.nullnessGroups.txt b/idea/testData/slicer/inflow/settersViaJavaDelegate.nullnessGroups.txt
index 60491b3dc2b14..570ca373ab9a6 100644
--- a/idea/testData/slicer/inflow/settersViaJavaDelegate.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/settersViaJavaDelegate.nullnessGroups.txt
@@ -1,14 +1,13 @@
[Other Values]
-5 var name by D()
-12 println("Now my name is '$name'")
-5 var name by D()
+5 var name by D() (in AClass.name: String!)
+12 println("Now my name is '$name'") (in AClass.uses())
+5 var name by D() (in AClass)
9 return _value;
13 _value = value;
12 void setValue(@Nullable Object thisRef, @NotNull KProperty> property, @NotNull String value) {
-5 var name by D()
+5 var name by D() (in AClass.name: String!)
6 private String _value = "";
-12 println("Now my name is '$name'")
-5 var name by D()
+12 println("Now my name is '$name'") (in AClass.uses())
+5 var name by D() (in AClass)
9 return _value;
6 private String _value = "";
-
diff --git a/idea/testData/slicer/inflow/settersViaJavaDelegate.results.txt b/idea/testData/slicer/inflow/settersViaJavaDelegate.results.txt
index 5838dfd8dac52..01d160a6f6fbb 100644
--- a/idea/testData/slicer/inflow/settersViaJavaDelegate.results.txt
+++ b/idea/testData/slicer/inflow/settersViaJavaDelegate.results.txt
@@ -1,7 +1,7 @@
-12 println("Now my name is '$name'")
-5 var name by D()
+12 println("Now my name is '$name'") (in AClass.uses())
+5 var name by D() (in AClass)
9 return _value;
6 private String _value = "";
13 _value = value;
12 void setValue(@Nullable Object thisRef, @NotNull KProperty> property, @NotNull String value) {
-5 var name by D()
+5 var name by D() (in AClass.name: String!)
diff --git a/idea/testData/slicer/inflow/thisInExtensionFunction.leafGroups.txt b/idea/testData/slicer/inflow/thisInExtensionFunction.leafGroups.txt
index eafa8a7b71480..63b1365767d93 100644
--- a/idea/testData/slicer/inflow/thisInExtensionFunction.leafGroups.txt
+++ b/idea/testData/slicer/inflow/thisInExtensionFunction.leafGroups.txt
@@ -1,8 +1,7 @@
-8 val x = "".extensionFun()
-8 val x = "".extensionFun()
-8 val x = "".extensionFun()
+8 val x = "".extensionFun() (in foo())
+8 val x = "".extensionFun() (in foo())
+8 val x = "".extensionFun() (in foo())
3 fun Any.extensionFun(): Any {
-4 return this
-3 fun Any.extensionFun(): Any {
-8 val x = "".extensionFun()
-
+4 return this (in extensionFun() on Any)
+3 fun Any.extensionFun(): Any { (in extensionFun() on Any)
+8 val x = "".extensionFun() (in foo())
diff --git a/idea/testData/slicer/inflow/thisInExtensionFunction.nullnessGroups.txt b/idea/testData/slicer/inflow/thisInExtensionFunction.nullnessGroups.txt
index 60b44919674c3..1c184aa676c8f 100644
--- a/idea/testData/slicer/inflow/thisInExtensionFunction.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/thisInExtensionFunction.nullnessGroups.txt
@@ -1,3 +1,3 @@
[NotNull Values]
-8 val x = "".extensionFun()
-8 val x = "".extensionFun()
+8 val x = "".extensionFun() (in foo())
+8 val x = "".extensionFun() (in foo())
diff --git a/idea/testData/slicer/inflow/thisInExtensionFunction.results.txt b/idea/testData/slicer/inflow/thisInExtensionFunction.results.txt
index 91848ff65044e..e8af754c3c5d0 100644
--- a/idea/testData/slicer/inflow/thisInExtensionFunction.results.txt
+++ b/idea/testData/slicer/inflow/thisInExtensionFunction.results.txt
@@ -1,6 +1,6 @@
-8 val x = "".extensionFun()
-8 val x = "".extensionFun()
+8 val x = "".extensionFun() (in foo())
+8 val x = "".extensionFun() (in foo())
3 fun Any.extensionFun(): Any {
-4 return this
-3 fun Any.extensionFun(): Any {
-8 val x = "".extensionFun()
+4 return this (in extensionFun() on Any)
+3 fun Any.extensionFun(): Any { (in extensionFun() on Any)
+8 val x = "".extensionFun() (in foo())
diff --git a/idea/testData/slicer/inflow/thisInExtensionProperty.leafGroups.txt b/idea/testData/slicer/inflow/thisInExtensionProperty.leafGroups.txt
index 682e1cb81e31f..f3e6b7757529a 100644
--- a/idea/testData/slicer/inflow/thisInExtensionProperty.leafGroups.txt
+++ b/idea/testData/slicer/inflow/thisInExtensionProperty.leafGroups.txt
@@ -1,8 +1,7 @@
-7 val x = "".extensionProp
-7 val x = "".extensionProp
-7 val x = "".extensionProp
+7 val x = "".extensionProp (in foo())
+7 val x = "".extensionProp (in foo())
+7 val x = "".extensionProp (in foo())
3 val Any.extensionProp: Any
-4 get() = this
-3 val Any.extensionProp: Any
-7 val x = "".extensionProp
-
+4 get() = this (in extensionProp: Any on Any)
+3 val Any.extensionProp: Any (in extensionProp: Any on Any)
+7 val x = "".extensionProp (in foo())
diff --git a/idea/testData/slicer/inflow/thisInExtensionProperty.nullnessGroups.txt b/idea/testData/slicer/inflow/thisInExtensionProperty.nullnessGroups.txt
index 3edbfc1b822b4..5d7467ab56186 100644
--- a/idea/testData/slicer/inflow/thisInExtensionProperty.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/thisInExtensionProperty.nullnessGroups.txt
@@ -1,3 +1,3 @@
[NotNull Values]
-7 val x = "".extensionProp
-7 val x = "".extensionProp
+7 val x = "".extensionProp (in foo())
+7 val x = "".extensionProp (in foo())
diff --git a/idea/testData/slicer/inflow/thisInExtensionProperty.results.txt b/idea/testData/slicer/inflow/thisInExtensionProperty.results.txt
index 630f22252a4d8..9b2fdc6a0a8d7 100644
--- a/idea/testData/slicer/inflow/thisInExtensionProperty.results.txt
+++ b/idea/testData/slicer/inflow/thisInExtensionProperty.results.txt
@@ -1,6 +1,6 @@
-7 val x = "".extensionProp
-7 val x = "".extensionProp
+7 val x = "".extensionProp (in foo())
+7 val x = "".extensionProp (in foo())
3 val Any.extensionProp: Any
-4 get() = this
-3 val Any.extensionProp: Any
-7 val x = "".extensionProp
+4 get() = this (in extensionProp: Any on Any)
+3 val Any.extensionProp: Any (in extensionProp: Any on Any)
+7 val x = "".extensionProp (in foo())
diff --git a/idea/testData/slicer/inflow/topLevelVal.leafGroups.txt b/idea/testData/slicer/inflow/topLevelVal.leafGroups.txt
index 6f666e918469c..585b0043c24f8 100644
--- a/idea/testData/slicer/inflow/topLevelVal.leafGroups.txt
+++ b/idea/testData/slicer/inflow/topLevelVal.leafGroups.txt
@@ -1,4 +1,3 @@
-3 val foo: Int = 1
+3 val foo: Int = 1 (in foo: Int)
3 val foo: Int = 1
-3 val foo: Int = 1
-
+3 val foo: Int = 1 (in foo: Int)
diff --git a/idea/testData/slicer/inflow/topLevelVal.results.txt b/idea/testData/slicer/inflow/topLevelVal.results.txt
index dd4cc8d739e3a..88596239d0fd9 100644
--- a/idea/testData/slicer/inflow/topLevelVal.results.txt
+++ b/idea/testData/slicer/inflow/topLevelVal.results.txt
@@ -1,2 +1,2 @@
3 val foo: Int = 1
-3 val foo: Int = 1
+3 val foo: Int = 1 (in foo: Int)
diff --git a/idea/testData/slicer/inflow/topLevelVar.leafGroups.txt b/idea/testData/slicer/inflow/topLevelVar.leafGroups.txt
index 60a8b4a95bc6c..9ce7bfb48a36a 100644
--- a/idea/testData/slicer/inflow/topLevelVar.leafGroups.txt
+++ b/idea/testData/slicer/inflow/topLevelVar.leafGroups.txt
@@ -1,12 +1,11 @@
-3 var foo: Int = 1
+3 var foo: Int = 1 (in foo: Int)
3 var foo: Int = 1
-3 var foo: Int = 1
+3 var foo: Int = 1 (in foo: Int)
-7 foo = 2
+7 foo = 2 (in test())
3 var foo: Int = 1
-7 foo = 2
+7 foo = 2 (in test())
4 TopLevelVarKt.setFoo(3);
3 var foo: Int = 1
4 TopLevelVarKt.setFoo(3);
-
diff --git a/idea/testData/slicer/inflow/topLevelVar.results.txt b/idea/testData/slicer/inflow/topLevelVar.results.txt
index 5df12d4edbbd1..c83c37430a391 100644
--- a/idea/testData/slicer/inflow/topLevelVar.results.txt
+++ b/idea/testData/slicer/inflow/topLevelVar.results.txt
@@ -1,4 +1,4 @@
3 var foo: Int = 1
-3 var foo: Int = 1
-7 foo = 2
+3 var foo: Int = 1 (in foo: Int)
+7 foo = 2 (in test())
4 TopLevelVarKt.setFoo(3);
diff --git a/idea/testData/slicer/inflow/valParameter.leafGroups.txt b/idea/testData/slicer/inflow/valParameter.leafGroups.txt
index f5ffd97031f2a..c95dfbd6a026c 100644
--- a/idea/testData/slicer/inflow/valParameter.leafGroups.txt
+++ b/idea/testData/slicer/inflow/valParameter.leafGroups.txt
@@ -1,17 +1,16 @@
2 D(int n) {
-3 open class A(val n: Int)
+3 open class A(val n: Int) (in A(Int))
3 super(n);
2 D(int n) {
-5 class B : A(1)
-3 open class A(val n: Int)
-5 class B : A(1)
+5 class B : A(1) (in B)
+3 open class A(val n: Int) (in A(Int))
+5 class B : A(1) (in B)
-8 val z = A(2).n
-3 open class A(val n: Int)
-8 val z = A(2).n
+8 val z = A(2).n (in test())
+3 open class A(val n: Int) (in A(Int))
+8 val z = A(2).n (in test())
7 A a = new A(3);
-3 open class A(val n: Int)
+3 open class A(val n: Int) (in A(Int))
7 A a = new A(3);
-
diff --git a/idea/testData/slicer/inflow/valParameter.nullnessGroups.txt b/idea/testData/slicer/inflow/valParameter.nullnessGroups.txt
index 52ad6775d94e5..bda1aca9933a8 100644
--- a/idea/testData/slicer/inflow/valParameter.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/valParameter.nullnessGroups.txt
@@ -1,3 +1,3 @@
[NotNull Values]
-3 open class A(val n: Int)
-3 open class A(val n: Int)
+3 open class A(val n: Int) (in A(Int))
+3 open class A(val n: Int) (in A(Int))
diff --git a/idea/testData/slicer/inflow/valParameter.results.txt b/idea/testData/slicer/inflow/valParameter.results.txt
index a1d7fbabba4d8..5caa00b926ec1 100644
--- a/idea/testData/slicer/inflow/valParameter.results.txt
+++ b/idea/testData/slicer/inflow/valParameter.results.txt
@@ -1,6 +1,6 @@
-3 open class A(val n: Int)
+3 open class A(val n: Int) (in A(Int))
3 super(n);
2 D(int n) {
-5 class B : A(1)
-8 val z = A(2).n
+5 class B : A(1) (in B)
+8 val z = A(2).n (in test())
7 A a = new A(3);
diff --git a/idea/testData/slicer/inflow/varParameter.leafGroups.txt b/idea/testData/slicer/inflow/varParameter.leafGroups.txt
index 6358f1a2d6507..8362548d7d9c1 100644
--- a/idea/testData/slicer/inflow/varParameter.leafGroups.txt
+++ b/idea/testData/slicer/inflow/varParameter.leafGroups.txt
@@ -1,25 +1,24 @@
2 D(int n) {
-3 open class A(var n: Int) {
+3 open class A(var n: Int) { (in A(Int))
3 super(n);
2 D(int n) {
-20 class B : A(1)
-3 open class A(var n: Int) {
-20 class B : A(1)
+20 class B : A(1) (in B)
+3 open class A(var n: Int) { (in A(Int))
+20 class B : A(1) (in B)
-23 val z = A(2).n
-3 open class A(var n: Int) {
-23 val z = A(2).n
+23 val z = A(2).n (in test())
+3 open class A(var n: Int) { (in A(Int))
+23 val z = A(2).n (in test())
-24 A(3).n = 2
-3 open class A(var n: Int) {
-24 A(3).n = 2
+24 A(3).n = 2 (in test())
+3 open class A(var n: Int) { (in A(Int))
+24 A(3).n = 2 (in test())
7 A a = new A(3);
-3 open class A(var n: Int) {
+3 open class A(var n: Int) { (in A(Int))
7 A a = new A(3);
9 a.setN(4);
-3 open class A(var n: Int) {
+3 open class A(var n: Int) { (in A(Int))
9 a.setN(4);
-
diff --git a/idea/testData/slicer/inflow/varParameter.nullnessGroups.txt b/idea/testData/slicer/inflow/varParameter.nullnessGroups.txt
index 309fcdd6e236c..d3a0b507ec15f 100644
--- a/idea/testData/slicer/inflow/varParameter.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/varParameter.nullnessGroups.txt
@@ -1,3 +1,3 @@
[NotNull Values]
-3 open class A(var n: Int) {
-3 open class A(var n: Int) {
+3 open class A(var n: Int) { (in A(Int))
+3 open class A(var n: Int) { (in A(Int))
diff --git a/idea/testData/slicer/inflow/varParameter.results.txt b/idea/testData/slicer/inflow/varParameter.results.txt
index a0222366b0f01..4777da88fdb7d 100644
--- a/idea/testData/slicer/inflow/varParameter.results.txt
+++ b/idea/testData/slicer/inflow/varParameter.results.txt
@@ -1,10 +1,10 @@
-3 open class A(var n: Int) {
+3 open class A(var n: Int) { (in A(Int))
3 super(n);
2 D(int n) {
7 A a = new A(3);
9 a.setN(4);
-16 n = 1
-20 class B : A(1)
-23 val z = A(2).n
-24 A(3).n = 2
-24 A(3).n = 2
+16 n = 1 (in A.bar(Int))
+20 class B : A(1) (in B)
+23 val z = A(2).n (in test())
+24 A(3).n = 2 (in test())
+24 A(3).n = 2 (in test())
diff --git a/idea/testData/slicer/inflow/whenExpression.leafGroups.txt b/idea/testData/slicer/inflow/whenExpression.leafGroups.txt
index b2d9415445011..7371e00cda621 100644
--- a/idea/testData/slicer/inflow/whenExpression.leafGroups.txt
+++ b/idea/testData/slicer/inflow/whenExpression.leafGroups.txt
@@ -1,16 +1,15 @@
-3 fun test(m: Int, n: Int) {
-4 val x = when (m) {
-4 val x = when (m) {
-6 2 -> n
-3 fun test(m: Int, n: Int) {
+3 fun test(m: Int, n: Int) { (in test(Int, Int))
+4 val x = when (m) { (in test(Int, Int))
+4 val x = when (m) { (in test(Int, Int))
+6 2 -> n (in test(Int, Int))
+3 fun test(m: Int, n: Int) { (in test(Int, Int))
-7 else -> 0
-4 val x = when (m) {
-4 val x = when (m) {
-7 else -> 0
-
-5 1 -> 1
-4 val x = when (m) {
-4 val x = when (m) {
-5 1 -> 1
+7 else -> 0 (in test(Int, Int))
+4 val x = when (m) { (in test(Int, Int))
+4 val x = when (m) { (in test(Int, Int))
+7 else -> 0 (in test(Int, Int))
+5 1 -> 1 (in test(Int, Int))
+4 val x = when (m) { (in test(Int, Int))
+4 val x = when (m) { (in test(Int, Int))
+5 1 -> 1 (in test(Int, Int))
diff --git a/idea/testData/slicer/inflow/whenExpression.nullnessGroups.txt b/idea/testData/slicer/inflow/whenExpression.nullnessGroups.txt
index eb6e467940b0c..1f8e75108f2bf 100644
--- a/idea/testData/slicer/inflow/whenExpression.nullnessGroups.txt
+++ b/idea/testData/slicer/inflow/whenExpression.nullnessGroups.txt
@@ -1,3 +1,3 @@
[NotNull Values]
-4 val x = when (m) {
-4 val x = when (m) {
+4 val x = when (m) { (in test(Int, Int))
+4 val x = when (m) { (in test(Int, Int))
diff --git a/idea/testData/slicer/inflow/whenExpression.results.txt b/idea/testData/slicer/inflow/whenExpression.results.txt
index 5d81dfb8b935c..3a6bd5df8005f 100644
--- a/idea/testData/slicer/inflow/whenExpression.results.txt
+++ b/idea/testData/slicer/inflow/whenExpression.results.txt
@@ -1,6 +1,6 @@
-4 val x = when (m) {
-4 val x = when (m) {
-5 1 -> 1
-6 2 -> n
-3 fun test(m: Int, n: Int) {
-7 else -> 0
+4 val x = when (m) { (in test(Int, Int))
+4 val x = when (m) { (in test(Int, Int))
+5 1 -> 1 (in test(Int, Int))
+6 2 -> n (in test(Int, Int))
+3 fun test(m: Int, n: Int) { (in test(Int, Int))
+7 else -> 0 (in test(Int, Int))
diff --git a/idea/testData/slicer/mpp/actualClassFunctionParameter/results.txt b/idea/testData/slicer/mpp/actualClassFunctionParameter/results.txt
index 6e5a96831cb59..d1dc4f8fb5203 100644
--- a/idea/testData/slicer/mpp/actualClassFunctionParameter/results.txt
+++ b/idea/testData/slicer/mpp/actualClassFunctionParameter/results.txt
@@ -1,3 +1,3 @@
-7 println(p)
-6 actual fun foo(p: Any) {
-8 c.foo(1)
+7 println(p) (in ExpectClass.foo(Any))
+6 actual fun foo(p: Any) { (in ExpectClass.foo(Any))
+8 c.foo(1) (in f(ExpectClass))
diff --git a/idea/testData/slicer/mpp/actualFunctionParameter/results.txt b/idea/testData/slicer/mpp/actualFunctionParameter/results.txt
index 6ec0bc31231e4..2e71cb57c27d0 100644
--- a/idea/testData/slicer/mpp/actualFunctionParameter/results.txt
+++ b/idea/testData/slicer/mpp/actualFunctionParameter/results.txt
@@ -1,3 +1,3 @@
-4 println(p)
-3 actual fun foo(p: Any) {
-4 foo(1)
+4 println(p) (in foo(Any))
+3 actual fun foo(p: Any) { (in foo(Any))
+4 foo(1) (in bar())
diff --git a/idea/testData/slicer/mpp/expectClassFunctionParameter/results.txt b/idea/testData/slicer/mpp/expectClassFunctionParameter/results.txt
index 5d4e4a1f9f22d..e362c99680f88 100644
--- a/idea/testData/slicer/mpp/expectClassFunctionParameter/results.txt
+++ b/idea/testData/slicer/mpp/expectClassFunctionParameter/results.txt
@@ -1,4 +1,4 @@
-10 c.foo(1)
-6 fun foo(p: Any)
-4 actual fun foo(p: Any) {
-5 println(p)
+10 c.foo(1) (in f(ExpectClass))
+6 fun foo(p: Any) (in ExpectClass.foo(Any))
+4 actual fun foo(p: Any) { (in ExpectClass.foo(Any))
+5 println(p) (in ExpectClass.foo(Any))
diff --git a/idea/testData/slicer/mpp/expectExtensionFunctionResultOut/results.txt b/idea/testData/slicer/mpp/expectExtensionFunctionResultOut/results.txt
index 788ac06c71946..577a42e3e5d11 100644
--- a/idea/testData/slicer/mpp/expectExtensionFunctionResultOut/results.txt
+++ b/idea/testData/slicer/mpp/expectExtensionFunctionResultOut/results.txt
@@ -1,8 +1,8 @@
-6 val result = 1.foo()
-3 expect fun Any.foo(): Any
-1 actual fun Any.foo(): Any {
-2 return this
+6 val result = 1.foo() (in bar())
+3 expect fun Any.foo(): Any (in foo() on Any)
+1 actual fun Any.foo(): Any { (in foo() on Any)
+2 return this (in foo() on Any)
1 actual fun Any.foo(): Any {
-6 val result = 1.foo()
-6 val result = 1.foo()
-7 println(result)
+6 val result = 1.foo() (in bar())
+6 val result = 1.foo() (in bar())
+7 println(result) (in bar())
diff --git a/idea/testData/slicer/mpp/expectFunctionParameter/results.txt b/idea/testData/slicer/mpp/expectFunctionParameter/results.txt
index 2226b1a446524..45c6465cdac01 100644
--- a/idea/testData/slicer/mpp/expectFunctionParameter/results.txt
+++ b/idea/testData/slicer/mpp/expectFunctionParameter/results.txt
@@ -1,4 +1,4 @@
-6 foo(1)
-3 expect fun foo(p: Any)
-1 actual fun foo(p: Any) {
-2 println(p)
+6 foo(1) (in bar())
+3 expect fun foo(p: Any) (in foo(Any))
+1 actual fun foo(p: Any) { (in foo(Any))
+2 println(p) (in foo(Any))
diff --git a/idea/testData/slicer/mpp/expectFunctionResultIn/results.txt b/idea/testData/slicer/mpp/expectFunctionResultIn/results.txt
index 24cfb2735a4f5..46695e8e9be72 100644
--- a/idea/testData/slicer/mpp/expectFunctionResultIn/results.txt
+++ b/idea/testData/slicer/mpp/expectFunctionResultIn/results.txt
@@ -1,8 +1,8 @@
-7 println(result)
-6 val result = foo(1)
-6 val result = foo(1)
+7 println(result) (in bar())
+6 val result = foo(1) (in bar())
+6 val result = foo(1) (in bar())
1 actual fun foo(p: Any): Any {
-2 return p
-1 actual fun foo(p: Any): Any {
-6 val result = foo(1)
+2 return p (in foo(Any))
+1 actual fun foo(p: Any): Any { (in foo(Any))
+6 val result = foo(1) (in bar())
3 expect fun foo(p: Any): Any
diff --git a/idea/testData/slicer/mpp/expectFunctionResultOut/results.txt b/idea/testData/slicer/mpp/expectFunctionResultOut/results.txt
index a911734ad8543..c5cfbdac96fac 100644
--- a/idea/testData/slicer/mpp/expectFunctionResultOut/results.txt
+++ b/idea/testData/slicer/mpp/expectFunctionResultOut/results.txt
@@ -1,8 +1,8 @@
-6 val result = foo(1)
-3 expect fun foo(p: Any): Any
-1 actual fun foo(p: Any): Any {
-2 return p
+6 val result = foo(1) (in bar())
+3 expect fun foo(p: Any): Any (in foo(Any))
+1 actual fun foo(p: Any): Any { (in foo(Any))
+2 return p (in foo(Any))
1 actual fun foo(p: Any): Any {
-6 val result = foo(1)
-6 val result = foo(1)
-7 println(result)
+6 val result = foo(1) (in bar())
+6 val result = foo(1) (in bar())
+7 println(result) (in bar())
diff --git a/idea/testData/slicer/mpp/expectPropertyResultIn/results.txt b/idea/testData/slicer/mpp/expectPropertyResultIn/results.txt
index 27e1489f52644..edf79eee8542c 100644
--- a/idea/testData/slicer/mpp/expectPropertyResultIn/results.txt
+++ b/idea/testData/slicer/mpp/expectPropertyResultIn/results.txt
@@ -1,8 +1,8 @@
-7 println(result)
-6 val result = 1.property
-6 val result = 1.property
+7 println(result) (in bar())
+6 val result = 1.property (in bar())
+6 val result = 1.property (in bar())
1 actual val Int.property: Any
-2 get() = this
-1 actual val Int.property: Any
-6 val result = 1.property
+2 get() = this (in property: Any on Int)
+1 actual val Int.property: Any (in property: Any on Int)
+6 val result = 1.property (in bar())
3 expect val Int.property: Any
diff --git a/idea/testData/slicer/mpp/expectPropertyResultOut/results.txt b/idea/testData/slicer/mpp/expectPropertyResultOut/results.txt
index c21ce46f88c69..9aa3d62ffe7f1 100644
--- a/idea/testData/slicer/mpp/expectPropertyResultOut/results.txt
+++ b/idea/testData/slicer/mpp/expectPropertyResultOut/results.txt
@@ -1,8 +1,8 @@
-6 val result = 1.property
-3 expect val Int.property: Any
-1 actual val Int.property: Any
-2 get() = this
-2 get() = this
-6 val result = 1.property
-6 val result = 1.property
-7 println(result)
+6 val result = 1.property (in bar())
+3 expect val Int.property: Any (in property: Any on Int)
+1 actual val Int.property: Any (in property: Any on Int)
+2 get() = this (in property: Any on Int)
+2 get() = this (in property: Any on Int)
+6 val result = 1.property (in bar())
+6 val result = 1.property (in bar())
+7 println(result) (in bar())
diff --git a/idea/testData/slicer/outflow/abstractExtensionMethodParameter.results.txt b/idea/testData/slicer/outflow/abstractExtensionMethodParameter.results.txt
index 5061672bb4e3a..7f56268e45b93 100644
--- a/idea/testData/slicer/outflow/abstractExtensionMethodParameter.results.txt
+++ b/idea/testData/slicer/outflow/abstractExtensionMethodParameter.results.txt
@@ -1,8 +1,8 @@
-14 1.foo(s)
-4 fun Int.foo(p: Any)
+14 1.foo(s) (in bar(String) on I)
+4 fun Int.foo(p: Any) (in foo(Any) on Int)
3 public void foo(int receiver, Object p) {
4 System.out.println(p);
-9 val v = p // this usage will be shown twice due to bug in Java implementation: https://youtrack.jetbrains.com/issue/IDEA-236958
-9 val v = p // this usage will be shown twice due to bug in Java implementation: https://youtrack.jetbrains.com/issue/IDEA-236958
-8 override fun Int.foo(p: Any) {
-9 DUPLICATE: val v = p // this usage will be shown twice due to bug in Java implementation: https://youtrack.jetbrains.com/issue/IDEA-236958
+9 val v = p // this usage will be shown twice due to bug in Java implementation: https://youtrack.jetbrains.com/issue/IDEA-236958 (in foo(Any) on Int)
+9 val v = p // this usage will be shown twice due to bug in Java implementation: https://youtrack.jetbrains.com/issue/IDEA-236958 (in foo(Any) on Int)
+8 override fun Int.foo(p: Any) { (in foo(Any) on Int)
+9 DUPLICATE: val v = p // this usage will be shown twice due to bug in Java implementation: https://youtrack.jetbrains.com/issue/IDEA-236958 (in foo(Any) on Int)
diff --git a/idea/testData/slicer/outflow/abstractMethodParameter1.results.txt b/idea/testData/slicer/outflow/abstractMethodParameter1.results.txt
index 740a8dfcba082..bb63ed5d0fd6f 100644
--- a/idea/testData/slicer/outflow/abstractMethodParameter1.results.txt
+++ b/idea/testData/slicer/outflow/abstractMethodParameter1.results.txt
@@ -1,4 +1,4 @@
-4 fun foo(p: Any)
-8 override fun foo(p: Any) {
-9 val v = p
-9 val v = p
+4 fun foo(p: Any) (in I.foo(Any))
+8 override fun foo(p: Any) { (in C.foo(Any))
+9 val v = p (in C.foo(Any))
+9 val v = p (in C.foo(Any))
diff --git a/idea/testData/slicer/outflow/abstractMethodParameter2.results.txt b/idea/testData/slicer/outflow/abstractMethodParameter2.results.txt
index 1b06742630d2b..deb6fdfad5127 100644
--- a/idea/testData/slicer/outflow/abstractMethodParameter2.results.txt
+++ b/idea/testData/slicer/outflow/abstractMethodParameter2.results.txt
@@ -1,8 +1,8 @@
-14 i.foo(s)
-4 fun foo(p: Any)
+14 i.foo(s) (in bar(I, String))
+4 fun foo(p: Any) (in I.foo(Any))
2 public void foo(Object p) {
3 System.out.println(p);
-9 val v = p // this usage will be shown twice due to bug in Java implementation: https://youtrack.jetbrains.com/issue/IDEA-236958
-9 val v = p // this usage will be shown twice due to bug in Java implementation: https://youtrack.jetbrains.com/issue/IDEA-236958
-8 override fun foo(p: Any) {
-9 DUPLICATE: val v = p // this usage will be shown twice due to bug in Java implementation: https://youtrack.jetbrains.com/issue/IDEA-236958
+9 val v = p // this usage will be shown twice due to bug in Java implementation: https://youtrack.jetbrains.com/issue/IDEA-236958 (in C.foo(Any))
+9 val v = p // this usage will be shown twice due to bug in Java implementation: https://youtrack.jetbrains.com/issue/IDEA-236958 (in C.foo(Any))
+8 override fun foo(p: Any) { (in C.foo(Any))
+9 DUPLICATE: val v = p // this usage will be shown twice due to bug in Java implementation: https://youtrack.jetbrains.com/issue/IDEA-236958 (in C.foo(Any))
diff --git a/idea/testData/slicer/outflow/anonymousFunBodyExpression.results.txt b/idea/testData/slicer/outflow/anonymousFunBodyExpression.results.txt
index 189f13ba43a1d..10a22b1033bb3 100644
--- a/idea/testData/slicer/outflow/anonymousFunBodyExpression.results.txt
+++ b/idea/testData/slicer/outflow/anonymousFunBodyExpression.results.txt
@@ -1,8 +1,8 @@
-8 val x = foo(fun(n: Int) = n)
-8 val x = foo(fun(n: Int) = n)
-8 [LAMBDA CALLS] val x = foo(fun(n: Int) = n)
-3 [LAMBDA CALLS] fun foo(f: (Int) -> Int): Int {
-4 return f(1)
+8 val x = foo(fun(n: Int) = n) (in test())
+8 val x = foo(fun(n: Int) = n) (in test())
+8 [LAMBDA CALLS] val x = foo(fun(n: Int) = n) (in test())
+3 [LAMBDA CALLS] fun foo(f: (Int) -> Int): Int { (in foo((Int) -> Int))
+4 return f(1) (in foo((Int) -> Int))
3 fun foo(f: (Int) -> Int): Int {
-8 val x = foo(fun(n: Int) = n)
-8 val x = foo(fun(n: Int) = n)
+8 val x = foo(fun(n: Int) = n) (in test())
+8 val x = foo(fun(n: Int) = n) (in test())
diff --git a/idea/testData/slicer/outflow/anonymousFunReturnExpression.results.txt b/idea/testData/slicer/outflow/anonymousFunReturnExpression.results.txt
index bd116b369d646..717540d26c4a8 100644
--- a/idea/testData/slicer/outflow/anonymousFunReturnExpression.results.txt
+++ b/idea/testData/slicer/outflow/anonymousFunReturnExpression.results.txt
@@ -1,8 +1,8 @@
-8 val x = foo(fun(n: Int): Int { return n })
-8 val x = foo(fun(n: Int): Int { return n })
-8 [LAMBDA CALLS] val x = foo(fun(n: Int): Int { return n })
-3 [LAMBDA CALLS] fun foo(f: (Int) -> Int): Int {
-4 return f(1)
+8 val x = foo(fun(n: Int): Int { return n }) (in test())
+8 val x = foo(fun(n: Int): Int { return n }) (in test())
+8 [LAMBDA CALLS] val x = foo(fun(n: Int): Int { return n }) (in test())
+3 [LAMBDA CALLS] fun foo(f: (Int) -> Int): Int { (in foo((Int) -> Int))
+4 return f(1) (in foo((Int) -> Int))
3 fun foo(f: (Int) -> Int): Int {
-8 val x = foo(fun(n: Int): Int { return n })
-8 val x = foo(fun(n: Int): Int { return n })
+8 val x = foo(fun(n: Int): Int { return n }) (in test())
+8 val x = foo(fun(n: Int): Int { return n }) (in test())
diff --git a/idea/testData/slicer/outflow/callArgument.results.txt b/idea/testData/slicer/outflow/callArgument.results.txt
index eafe00303153e..c5a95f5a7e4e5 100644
--- a/idea/testData/slicer/outflow/callArgument.results.txt
+++ b/idea/testData/slicer/outflow/callArgument.results.txt
@@ -1,6 +1,6 @@
-7 val x = 1
-7 val x = 1
-9 foo(x)
-2 fun foo(n: Int) {
-3 val y = n
-3 val y = n
+7 val x = 1 (in test())
+7 val x = 1 (in test())
+9 foo(x) (in test())
+2 fun foo(n: Int) { (in foo(Int))
+3 val y = n (in foo(Int))
+3 val y = n (in foo(Int))
diff --git a/idea/testData/slicer/outflow/callArgumentKJK.results.txt b/idea/testData/slicer/outflow/callArgumentKJK.results.txt
index feab245d97c32..fd027b922ae27 100644
--- a/idea/testData/slicer/outflow/callArgumentKJK.results.txt
+++ b/idea/testData/slicer/outflow/callArgumentKJK.results.txt
@@ -1,10 +1,10 @@
-8 val x = 1
-8 val x = 1
-9 J().foo(x)
+8 val x = 1 (in K.test())
+8 val x = 1 (in K.test())
+9 J().foo(x) (in K.test())
2 void foo(int n) {
3 int y = n;
3 int y = n;
4 new K().bar(y);
-3 fun bar(m: Int) {
-4 val z = m
-4 val z = m
+3 fun bar(m: Int) { (in K.bar(Int))
+4 val z = m (in K.bar(Int))
+4 val z = m (in K.bar(Int))
diff --git a/idea/testData/slicer/outflow/cast.results.txt b/idea/testData/slicer/outflow/cast.results.txt
index f0d4a0e6ae6b7..d096579cb8a82 100644
--- a/idea/testData/slicer/outflow/cast.results.txt
+++ b/idea/testData/slicer/outflow/cast.results.txt
@@ -1,7 +1,7 @@
-3 fun test(o: Any) {
-4 val x = o as String
-4 val x = o as String
-4 val x = o as String
-5 val y = o as? String
-5 val y = o as? String
-5 val y = o as? String
+3 fun test(o: Any) { (in test(Any))
+4 val x = o as String (in test(Any))
+4 val x = o as String (in test(Any))
+4 val x = o as String (in test(Any))
+5 val y = o as? String (in test(Any))
+5 val y = o as? String (in test(Any))
+5 val y = o as? String (in test(Any))
diff --git a/idea/testData/slicer/outflow/defaultExplicitPrimaryConstructorCalls.results.txt b/idea/testData/slicer/outflow/defaultExplicitPrimaryConstructorCalls.results.txt
index 94f004deac532..a66681fde7563 100644
--- a/idea/testData/slicer/outflow/defaultExplicitPrimaryConstructorCalls.results.txt
+++ b/idea/testData/slicer/outflow/defaultExplicitPrimaryConstructorCalls.results.txt
@@ -1,9 +1,9 @@
-3 open class A() {
+3 open class A() { (in A)
2 J() {
-4 constructor(n: Int) : this()
+4 constructor(n: Int) : this() (in constructor A(Int))
7 super();
-7 class B : A()
+7 class B : A() (in B)
11 A a = new A();
-10 constructor() : super()
-14 val x = A()
-14 val x = A()
+10 constructor() : super() (in constructor C())
+14 val x = A() (in test())
+14 val x = A() (in test())
diff --git a/idea/testData/slicer/outflow/diamondHierarchyJKLeafClassFun.results.txt b/idea/testData/slicer/outflow/diamondHierarchyJKLeafClassFun.results.txt
index 54c3da0171b47..ca16c40511ee8 100644
--- a/idea/testData/slicer/outflow/diamondHierarchyJKLeafClassFun.results.txt
+++ b/idea/testData/slicer/outflow/diamondHierarchyJKLeafClassFun.results.txt
@@ -1,22 +1,22 @@
-4 override fun foo() = 4
-4 override fun foo() = 4
+4 override fun foo() = 4 (in D.foo())
+4 override fun foo() = 4 (in D)
2 public int foo();
-8 val x = a.foo()
-8 val x = a.foo()
-9 val y = b.foo()
-9 val y = b.foo()
-10 val z = c.foo()
-10 val z = c.foo()
-11 val u = d.foo()
-11 val u = d.foo()
+8 val x = a.foo() (in test(A, B, C, D))
+8 val x = a.foo() (in test(A, B, C, D))
+9 val y = b.foo() (in test(A, B, C, D))
+9 val y = b.foo() (in test(A, B, C, D))
+10 val z = c.foo() (in test(A, B, C, D))
+10 val z = c.foo() (in test(A, B, C, D))
+11 val u = d.foo() (in test(A, B, C, D))
+11 val u = d.foo() (in test(A, B, C, D))
6 public int foo() {
-8 DUPLICATE: val x = a.foo()
-9 DUPLICATE: val y = b.foo()
-10 DUPLICATE: val z = c.foo()
-11 DUPLICATE: val u = d.foo()
+8 DUPLICATE: val x = a.foo() (in test(A, B, C, D))
+9 DUPLICATE: val y = b.foo() (in test(A, B, C, D))
+10 DUPLICATE: val z = c.foo() (in test(A, B, C, D))
+11 DUPLICATE: val u = d.foo() (in test(A, B, C, D))
12 public int foo();
-8 DUPLICATE: val x = a.foo()
-9 DUPLICATE: val y = b.foo()
-10 DUPLICATE: val z = c.foo()
-11 DUPLICATE: val u = d.foo()
-11 DUPLICATE: val u = d.foo()
+8 DUPLICATE: val x = a.foo() (in test(A, B, C, D))
+9 DUPLICATE: val y = b.foo() (in test(A, B, C, D))
+10 DUPLICATE: val z = c.foo() (in test(A, B, C, D))
+11 DUPLICATE: val u = d.foo() (in test(A, B, C, D))
+11 DUPLICATE: val u = d.foo() (in test(A, B, C, D))
diff --git a/idea/testData/slicer/outflow/diamondHierarchyJKMiddleClassFun.results.txt b/idea/testData/slicer/outflow/diamondHierarchyJKMiddleClassFun.results.txt
index af121d2565c45..6aadb7ca398ff 100644
--- a/idea/testData/slicer/outflow/diamondHierarchyJKMiddleClassFun.results.txt
+++ b/idea/testData/slicer/outflow/diamondHierarchyJKMiddleClassFun.results.txt
@@ -1,12 +1,12 @@
-4 override fun foo() = 2
-4 override fun foo() = 2
+4 override fun foo() = 2 (in B.foo())
+4 override fun foo() = 2 (in B)
2 public int foo();
-8 val x = a.foo()
-8 val x = a.foo()
-9 val y = b.foo()
-9 val y = b.foo()
-10 val z = c.foo()
-10 val z = c.foo()
-11 val u = d.foo()
-11 val u = d.foo()
-9 DUPLICATE: val y = b.foo()
+8 val x = a.foo() (in test(A, B, C, D))
+8 val x = a.foo() (in test(A, B, C, D))
+9 val y = b.foo() (in test(A, B, C, D))
+9 val y = b.foo() (in test(A, B, C, D))
+10 val z = c.foo() (in test(A, B, C, D))
+10 val z = c.foo() (in test(A, B, C, D))
+11 val u = d.foo() (in test(A, B, C, D))
+11 val u = d.foo() (in test(A, B, C, D))
+9 DUPLICATE: val y = b.foo() (in test(A, B, C, D))
diff --git a/idea/testData/slicer/outflow/diamondHierarchyJKMiddleInterfaceFun.results.txt b/idea/testData/slicer/outflow/diamondHierarchyJKMiddleInterfaceFun.results.txt
index d57a2627a9f93..e6ebaa6320988 100644
--- a/idea/testData/slicer/outflow/diamondHierarchyJKMiddleInterfaceFun.results.txt
+++ b/idea/testData/slicer/outflow/diamondHierarchyJKMiddleInterfaceFun.results.txt
@@ -1,12 +1,12 @@
-4 override fun foo() = 3
-4 override fun foo() = 3
+4 override fun foo() = 3 (in C.foo())
+4 override fun foo() = 3 (in C)
2 public int foo();
-8 val x = a.foo()
-8 val x = a.foo()
-9 val y = b.foo()
-9 val y = b.foo()
-10 val z = c.foo()
-10 val z = c.foo()
-11 val u = d.foo()
-11 val u = d.foo()
-10 DUPLICATE: val z = c.foo()
+8 val x = a.foo() (in test(A, B, C, D))
+8 val x = a.foo() (in test(A, B, C, D))
+9 val y = b.foo() (in test(A, B, C, D))
+9 val y = b.foo() (in test(A, B, C, D))
+10 val z = c.foo() (in test(A, B, C, D))
+10 val z = c.foo() (in test(A, B, C, D))
+11 val u = d.foo() (in test(A, B, C, D))
+11 val u = d.foo() (in test(A, B, C, D))
+10 DUPLICATE: val z = c.foo() (in test(A, B, C, D))
diff --git a/idea/testData/slicer/outflow/diamondHierarchyLeafClassFun.results.txt b/idea/testData/slicer/outflow/diamondHierarchyLeafClassFun.results.txt
index 9c48ea7633255..963497f3db086 100644
--- a/idea/testData/slicer/outflow/diamondHierarchyLeafClassFun.results.txt
+++ b/idea/testData/slicer/outflow/diamondHierarchyLeafClassFun.results.txt
@@ -1,10 +1,10 @@
-16 override fun foo() = 4
-16 override fun foo() = 4
-20 val x = a.foo()
-20 val x = a.foo()
-21 val y = b.foo()
-21 val y = b.foo()
-22 val z = c.foo()
-22 val z = c.foo()
-23 val u = d.foo()
-23 val u = d.foo()
+16 override fun foo() = 4 (in D.foo())
+16 override fun foo() = 4 (in D)
+20 val x = a.foo() (in test(A, B, C, D))
+20 val x = a.foo() (in test(A, B, C, D))
+21 val y = b.foo() (in test(A, B, C, D))
+21 val y = b.foo() (in test(A, B, C, D))
+22 val z = c.foo() (in test(A, B, C, D))
+22 val z = c.foo() (in test(A, B, C, D))
+23 val u = d.foo() (in test(A, B, C, D))
+23 val u = d.foo() (in test(A, B, C, D))
diff --git a/idea/testData/slicer/outflow/diamondHierarchyMiddleClassFun.results.txt b/idea/testData/slicer/outflow/diamondHierarchyMiddleClassFun.results.txt
index 63905fff14c52..4bfea009d1ae5 100644
--- a/idea/testData/slicer/outflow/diamondHierarchyMiddleClassFun.results.txt
+++ b/idea/testData/slicer/outflow/diamondHierarchyMiddleClassFun.results.txt
@@ -1,6 +1,6 @@
-8 override fun foo() = 2
-8 override fun foo() = 2
-20 val x = a.foo()
-20 val x = a.foo()
-21 val y = b.foo()
-21 val y = b.foo()
+8 override fun foo() = 2 (in B.foo())
+8 override fun foo() = 2 (in B)
+20 val x = a.foo() (in test(A, B, C, D))
+20 val x = a.foo() (in test(A, B, C, D))
+21 val y = b.foo() (in test(A, B, C, D))
+21 val y = b.foo() (in test(A, B, C, D))
diff --git a/idea/testData/slicer/outflow/diamondHierarchyMiddleInterfaceFun.results.txt b/idea/testData/slicer/outflow/diamondHierarchyMiddleInterfaceFun.results.txt
index 7d63f48ac4fc4..2cccff232b6eb 100644
--- a/idea/testData/slicer/outflow/diamondHierarchyMiddleInterfaceFun.results.txt
+++ b/idea/testData/slicer/outflow/diamondHierarchyMiddleInterfaceFun.results.txt
@@ -1,6 +1,6 @@
-12 override fun foo() = 3
-12 override fun foo() = 3
-20 val x = a.foo()
-20 val x = a.foo()
-22 val z = c.foo()
-22 val z = c.foo()
+12 override fun foo() = 3 (in C.foo())
+12 override fun foo() = 3 (in C)
+20 val x = a.foo() (in test(A, B, C, D))
+20 val x = a.foo() (in test(A, B, C, D))
+22 val z = c.foo() (in test(A, B, C, D))
+22 val z = c.foo() (in test(A, B, C, D))
diff --git a/idea/testData/slicer/outflow/docCommentRefs.results.txt b/idea/testData/slicer/outflow/docCommentRefs.results.txt
index 24862e3c6dbc2..7ebaba4148085 100644
--- a/idea/testData/slicer/outflow/docCommentRefs.results.txt
+++ b/idea/testData/slicer/outflow/docCommentRefs.results.txt
@@ -1,3 +1,3 @@
-4 fun foo(): Int = 10
-10 val v = foo()
-10 val v = foo()
+4 fun foo(): Int = 10 (in KotlinClass)
+10 val v = foo() (in KotlinClass.bar())
+10 val v = foo() (in KotlinClass.bar())
diff --git a/idea/testData/slicer/outflow/docCommentRefs2.results.txt b/idea/testData/slicer/outflow/docCommentRefs2.results.txt
index 19d4b4f877955..7c20ac93828b0 100644
--- a/idea/testData/slicer/outflow/docCommentRefs2.results.txt
+++ b/idea/testData/slicer/outflow/docCommentRefs2.results.txt
@@ -1,3 +1,3 @@
3 val String.foo: Int
-10 val v = "".foo
-10 val v = "".foo
+10 val v = "".foo (in bar())
+10 val v = "".foo (in bar())
diff --git a/idea/testData/slicer/outflow/doubleLambdaResult.results.txt b/idea/testData/slicer/outflow/doubleLambdaResult.results.txt
index 00967a6bfe01a..839241bb8ea4d 100644
--- a/idea/testData/slicer/outflow/doubleLambdaResult.results.txt
+++ b/idea/testData/slicer/outflow/doubleLambdaResult.results.txt
@@ -1,11 +1,11 @@
-8 val x = foo(1, 2) { { it } }
-8 val x = foo(1, 2) { { it } }
-8 [LAMBDA CALLS] val x = foo(1, 2) { { it } }
-8 [LAMBDA CALLS] val x = foo(1, 2) { { it } }
-8 [LAMBDA CALLS] [LAMBDA CALLS] val x = foo(1, 2) { { it } }
-3 [LAMBDA CALLS] [LAMBDA CALLS] fun foo(a: Int, b: Int, f: (Int) -> (Int) -> Int): Int {
-4 [LAMBDA CALLS] return f(a)(b)
-4 return f(a)(b)
+8 val x = foo(1, 2) { { it } } (in test())
+8 val x = foo(1, 2) { { it } } (in test())
+8 [LAMBDA CALLS] val x = foo(1, 2) { { it } } (in test())
+8 [LAMBDA CALLS] val x = foo(1, 2) { { it } } (in test())
+8 [LAMBDA CALLS] [LAMBDA CALLS] val x = foo(1, 2) { { it } } (in test())
+3 [LAMBDA CALLS] [LAMBDA CALLS] fun foo(a: Int, b: Int, f: (Int) -> (Int) -> Int): Int { (in foo(Int, Int, (Int) -> (Int) -> Int))
+4 [LAMBDA CALLS] return f(a)(b) (in foo(Int, Int, (Int) -> (Int) -> Int))
+4 return f(a)(b) (in foo(Int, Int, (Int) -> (Int) -> Int))
3 fun foo(a: Int, b: Int, f: (Int) -> (Int) -> Int): Int {
-8 val x = foo(1, 2) { { it } }
-8 val x = foo(1, 2) { { it } }
+8 val x = foo(1, 2) { { it } } (in test())
+8 val x = foo(1, 2) { { it } } (in test())
diff --git a/idea/testData/slicer/outflow/explicitLambdaReturnExpression.results.txt b/idea/testData/slicer/outflow/explicitLambdaReturnExpression.results.txt
index ed4acab12110b..dccf603618bc0 100644
--- a/idea/testData/slicer/outflow/explicitLambdaReturnExpression.results.txt
+++ b/idea/testData/slicer/outflow/explicitLambdaReturnExpression.results.txt
@@ -1,8 +1,8 @@
-9 if (it < 0) return@foo 0
-8 val x = foo {
-8 [LAMBDA CALLS] val x = foo {
-3 [LAMBDA CALLS] fun foo(f: (Int) -> Int): Int {
-4 return f(1)
+9 if (it < 0) return@foo 0 (in test())
+8 val x = foo { (in test())
+8 [LAMBDA CALLS] val x = foo { (in test())
+3 [LAMBDA CALLS] fun foo(f: (Int) -> Int): Int { (in foo((Int) -> Int))
+4 return f(1) (in foo((Int) -> Int))
3 fun foo(f: (Int) -> Int): Int {
-8 val x = foo {
-8 val x = foo {
+8 val x = foo { (in test())
+8 val x = foo { (in test())
diff --git a/idea/testData/slicer/outflow/extensionIndexingDereferences.results.txt b/idea/testData/slicer/outflow/extensionIndexingDereferences.results.txt
index 8fc37514958cb..6b8c670503a91 100644
--- a/idea/testData/slicer/outflow/extensionIndexingDereferences.results.txt
+++ b/idea/testData/slicer/outflow/extensionIndexingDereferences.results.txt
@@ -1,26 +1,26 @@
-15 val x = A()
-18 x[1]
-6 operator fun A.get(i: Int) = this
-6 operator fun A.get(i: Int) = this
+15 val x = A() (in test())
+18 x[1] (in test())
+6 operator fun A.get(i: Int) = this (in get(Int) on A)
+6 operator fun A.get(i: Int) = this (in get(Int) on A)
6 operator fun A.get(i: Int) = this
-18 x[1]
-20 x[1] += y
-8 operator fun A.plusAssign(a: A) {
-9 val v = this
-9 val v = this
-21 x[1] *= y
-11 operator fun A.times(a: A) = this
-11 operator fun A.times(a: A) = this
+18 x[1] (in test())
+20 x[1] += y (in test())
+8 operator fun A.plusAssign(a: A) { (in plusAssign(A) on A)
+9 val v = this (in plusAssign(A) on A)
+9 val v = this (in plusAssign(A) on A)
+21 x[1] *= y (in test())
+11 operator fun A.times(a: A) = this (in times(A) on A)
+11 operator fun A.times(a: A) = this (in times(A) on A)
11 operator fun A.times(a: A) = this
-21 x[1] *= y
-22 x[1]++
-12 operator fun A.inc() = this
-12 operator fun A.inc() = this
+21 x[1] *= y (in test())
+22 x[1]++ (in test())
+12 operator fun A.inc() = this (in inc() on A)
+12 operator fun A.inc() = this (in inc() on A)
12 operator fun A.inc() = this
-22 x[1]++
-12 DUPLICATE: operator fun A.inc() = this
-19 x[1] = y
-20 x[1] += y
-6 DUPLICATE: operator fun A.get(i: Int) = this
-21 x[1] *= y
-22 x[1]++
+22 x[1]++ (in test())
+12 DUPLICATE: operator fun A.inc() = this (in inc() on A)
+19 x[1] = y (in test())
+20 x[1] += y (in test())
+6 DUPLICATE: operator fun A.get(i: Int) = this (in get(Int) on A)
+21 x[1] *= y (in test())
+22 x[1]++ (in test())
diff --git a/idea/testData/slicer/outflow/forVariable.results.txt b/idea/testData/slicer/outflow/forVariable.results.txt
index a6f8f6aaeb054..f43dff236eda0 100644
--- a/idea/testData/slicer/outflow/forVariable.results.txt
+++ b/idea/testData/slicer/outflow/forVariable.results.txt
@@ -1,4 +1,4 @@
-6 for (s in list)
-7 if (s.length == 0)
-8 f1(s)
-3 fun f1(param: String) {}
+6 for (s in list) (in f4(List))
+7 if (s.length == 0) (in f4(List))
+8 f1(s) (in f4(List))
+3 fun f1(param: String) {} (in f1(String))
diff --git a/idea/testData/slicer/outflow/funBodyExpression.results.txt b/idea/testData/slicer/outflow/funBodyExpression.results.txt
index 14dad29430bcf..292cdac099976 100644
--- a/idea/testData/slicer/outflow/funBodyExpression.results.txt
+++ b/idea/testData/slicer/outflow/funBodyExpression.results.txt
@@ -1,4 +1,4 @@
-3 fun foo(n: Int): Int = n
+3 fun foo(n: Int): Int = n (in foo(Int))
3 fun foo(n: Int): Int = n
-6 val x = foo(1)
-6 val x = foo(1)
+6 val x = foo(1) (in test())
+6 val x = foo(1) (in test())
diff --git a/idea/testData/slicer/outflow/funParameterUsages.results.txt b/idea/testData/slicer/outflow/funParameterUsages.results.txt
index 5b31c3816d007..d0e3fe33016e1 100644
--- a/idea/testData/slicer/outflow/funParameterUsages.results.txt
+++ b/idea/testData/slicer/outflow/funParameterUsages.results.txt
@@ -1,7 +1,7 @@
-3 fun foo(n: Int) {
-4 val x = n
-4 val x = n
-7 y = n
-6 val y: Int
-9 bar(n)
-12 fun bar(m: Int) {
+3 fun foo(n: Int) { (in foo(Int))
+4 val x = n (in foo(Int))
+4 val x = n (in foo(Int))
+7 y = n (in foo(Int))
+6 val y: Int (in foo(Int))
+9 bar(n) (in foo(Int))
+12 fun bar(m: Int) { (in bar(Int))
diff --git a/idea/testData/slicer/outflow/funResultViaCallableRef.results.txt b/idea/testData/slicer/outflow/funResultViaCallableRef.results.txt
index 9c2d2b67643b9..a99e26338a965 100644
--- a/idea/testData/slicer/outflow/funResultViaCallableRef.results.txt
+++ b/idea/testData/slicer/outflow/funResultViaCallableRef.results.txt
@@ -1,8 +1,8 @@
-8 fun bar(n: Int) = n
-8 fun bar(n: Int) = n
-9 [LAMBDA CALLS] val x = foo(::bar)
-3 [LAMBDA CALLS] fun foo(f: (Int) -> Int): Int {
-4 return f(1)
+8 fun bar(n: Int) = n (in test())
+8 fun bar(n: Int) = n (in test())
+9 [LAMBDA CALLS] val x = foo(::bar) (in test())
+3 [LAMBDA CALLS] fun foo(f: (Int) -> Int): Int { (in foo((Int) -> Int))
+4 return f(1) (in foo((Int) -> Int))
3 fun foo(f: (Int) -> Int): Int {
-9 val x = foo(::bar)
-9 val x = foo(::bar)
+9 val x = foo(::bar) (in test())
+9 val x = foo(::bar) (in test())
diff --git a/idea/testData/slicer/outflow/funResultViaCallableRefWithAssignment.results.txt b/idea/testData/slicer/outflow/funResultViaCallableRefWithAssignment.results.txt
index a43f3051cf886..6cc075c2b3b8a 100644
--- a/idea/testData/slicer/outflow/funResultViaCallableRefWithAssignment.results.txt
+++ b/idea/testData/slicer/outflow/funResultViaCallableRefWithAssignment.results.txt
@@ -1,10 +1,10 @@
-8 fun bar(n: Int) = n
-8 fun bar(n: Int) = n
-9 [LAMBDA CALLS] val f = ::bar
-9 [LAMBDA CALLS] val f = ::bar
-10 [LAMBDA CALLS] val x = foo(f)
-3 [LAMBDA CALLS] fun foo(f: (Int) -> Int): Int {
-4 return f(1)
+8 fun bar(n: Int) = n (in test())
+8 fun bar(n: Int) = n (in test())
+9 [LAMBDA CALLS] val f = ::bar (in test())
+9 [LAMBDA CALLS] val f = ::bar (in test())
+10 [LAMBDA CALLS] val x = foo(f) (in test())
+3 [LAMBDA CALLS] fun foo(f: (Int) -> Int): Int { (in foo((Int) -> Int))
+4 return f(1) (in foo((Int) -> Int))
3 fun foo(f: (Int) -> Int): Int {
-10 val x = foo(f)
-10 val x = foo(f)
+10 val x = foo(f) (in test())
+10 val x = foo(f) (in test())
diff --git a/idea/testData/slicer/outflow/funResultViaCallableRefWithDirectCall.results.txt b/idea/testData/slicer/outflow/funResultViaCallableRefWithDirectCall.results.txt
index 7bad596ae1822..f878fe5907823 100644
--- a/idea/testData/slicer/outflow/funResultViaCallableRefWithDirectCall.results.txt
+++ b/idea/testData/slicer/outflow/funResultViaCallableRefWithDirectCall.results.txt
@@ -1,5 +1,5 @@
-4 fun bar(n: Int) = n
-4 fun bar(n: Int) = n
-5 [LAMBDA CALLS] val x = (::bar)(1)
-5 val x = (::bar)(1)
-5 val x = (::bar)(1)
+4 fun bar(n: Int) = n (in test())
+4 fun bar(n: Int) = n (in test())
+5 [LAMBDA CALLS] val x = (::bar)(1) (in test())
+5 val x = (::bar)(1) (in test())
+5 val x = (::bar)(1) (in test())
diff --git a/idea/testData/slicer/outflow/funReturnExpression.results.txt b/idea/testData/slicer/outflow/funReturnExpression.results.txt
index 26af5d4593e56..3a1f208acbc61 100644
--- a/idea/testData/slicer/outflow/funReturnExpression.results.txt
+++ b/idea/testData/slicer/outflow/funReturnExpression.results.txt
@@ -1,4 +1,4 @@
-4 return n
+4 return n (in foo(Int))
3 fun foo(n: Int): Int {
-8 val x = foo(1)
-8 val x = foo(1)
+8 val x = foo(1) (in test())
+8 val x = foo(1) (in test())
diff --git a/idea/testData/slicer/outflow/functionCalls.results.txt b/idea/testData/slicer/outflow/functionCalls.results.txt
index 94fb8f8d78c51..24cb6fa2291b9 100644
--- a/idea/testData/slicer/outflow/functionCalls.results.txt
+++ b/idea/testData/slicer/outflow/functionCalls.results.txt
@@ -1,4 +1,4 @@
3 fun foo(n: Int) = n + 1
3 int x = FunctionCallsKt.foo(2);
-6 val x = foo(1)
-6 val x = foo(1)
+6 val x = foo(1) (in test(Int))
+6 val x = foo(1) (in test(Int))
diff --git a/idea/testData/slicer/outflow/getFunCalls.results.txt b/idea/testData/slicer/outflow/getFunCalls.results.txt
index 0f73e0e67a0a6..dcbb9c21855fd 100644
--- a/idea/testData/slicer/outflow/getFunCalls.results.txt
+++ b/idea/testData/slicer/outflow/getFunCalls.results.txt
@@ -1,3 +1,3 @@
-4 operator fun get(n: Int) = this
-8 val x = A()[2]
-8 val x = A()[2]
+4 operator fun get(n: Int) = this (in A)
+8 val x = A()[2] (in test())
+8 val x = A()[2] (in test())
diff --git a/idea/testData/slicer/outflow/getterExpressionBody.results.txt b/idea/testData/slicer/outflow/getterExpressionBody.results.txt
index bd8b273201fce..fef2361f1c593 100644
--- a/idea/testData/slicer/outflow/getterExpressionBody.results.txt
+++ b/idea/testData/slicer/outflow/getterExpressionBody.results.txt
@@ -1,4 +1,4 @@
-4 get() = 0
-4 get() = 0
-7 val x = foo
-7 val x = foo
+4 get() = 0 (in foo: Int)
+4 get() = 0 (in foo: Int)
+7 val x = foo (in test())
+7 val x = foo (in test())
diff --git a/idea/testData/slicer/outflow/getterReturnExpression.results.txt b/idea/testData/slicer/outflow/getterReturnExpression.results.txt
index 83ac2411725b8..4a96fbaa9234f 100644
--- a/idea/testData/slicer/outflow/getterReturnExpression.results.txt
+++ b/idea/testData/slicer/outflow/getterReturnExpression.results.txt
@@ -1,4 +1,4 @@
-5 return 0
-4 get(): Int {
-9 val x = foo
-9 val x = foo
+5 return 0 (in foo: Int)
+4 get(): Int { (in foo: Int)
+9 val x = foo (in test())
+9 val x = foo (in test())
diff --git a/idea/testData/slicer/outflow/ifExpression.results.txt b/idea/testData/slicer/outflow/ifExpression.results.txt
index 2ab3e313974fc..64252490a527a 100644
--- a/idea/testData/slicer/outflow/ifExpression.results.txt
+++ b/idea/testData/slicer/outflow/ifExpression.results.txt
@@ -1,3 +1,3 @@
-3 fun test(m: Int, n: Int) {
-4 val x = if (m > 1) n else 1
-4 val x = if (m > 1) n else 1
+3 fun test(m: Int, n: Int) { (in test(Int, Int))
+4 val x = if (m > 1) n else 1 (in test(Int, Int))
+4 val x = if (m > 1) n else 1 (in test(Int, Int))
diff --git a/idea/testData/slicer/outflow/implicitReceiver.results.txt b/idea/testData/slicer/outflow/implicitReceiver.results.txt
index bdf746def2127..f5966a3f9f0a5 100644
--- a/idea/testData/slicer/outflow/implicitReceiver.results.txt
+++ b/idea/testData/slicer/outflow/implicitReceiver.results.txt
@@ -1,7 +1,7 @@
-16 "A".foo()
-9 fun String.foo() {
-5 fun String.stringExtensionFun() = this
-5 fun String.stringExtensionFun() = this
-5 fun String.stringExtensionFun() = this
-10 val string = stringExtensionFun()
-10 val string = stringExtensionFun()
+16 "A".foo() (in outer() on Int)
+9 fun String.foo() { (in outer() on Int)
+5 fun String.stringExtensionFun() = this (in outer() on Int)
+5 fun String.stringExtensionFun() = this (in outer() on Int)
+5 fun String.stringExtensionFun() = this (in outer() on Int)
+10 val string = stringExtensionFun() (in outer() on Int)
+10 val string = stringExtensionFun() (in outer() on Int)
diff --git a/idea/testData/slicer/outflow/indexingDereferences.results.txt b/idea/testData/slicer/outflow/indexingDereferences.results.txt
index 3bf4d7e726234..1cfab0b90d5be 100644
--- a/idea/testData/slicer/outflow/indexingDereferences.results.txt
+++ b/idea/testData/slicer/outflow/indexingDereferences.results.txt
@@ -1,6 +1,6 @@
-15 val x = A()
-18 DEREFERENCE: x[1]
-19 DEREFERENCE: x[1] = y
-20 DEREFERENCE: x[1] += y
-21 DEREFERENCE: x[1] *= y
-22 DEREFERENCE: x[1]++
+15 val x = A() (in test())
+18 DEREFERENCE: x[1] (in test())
+19 DEREFERENCE: x[1] = y (in test())
+20 DEREFERENCE: x[1] += y (in test())
+21 DEREFERENCE: x[1] *= y (in test())
+22 DEREFERENCE: x[1]++ (in test())
diff --git a/idea/testData/slicer/outflow/invokeExtensionLambda.results.txt b/idea/testData/slicer/outflow/invokeExtensionLambda.results.txt
index 79bb59916d36d..476a56d1f6629 100644
--- a/idea/testData/slicer/outflow/invokeExtensionLambda.results.txt
+++ b/idea/testData/slicer/outflow/invokeExtensionLambda.results.txt
@@ -1,46 +1,46 @@
-3 fun String.foo(p: String) {
-4 val v1 = f(p, { this })
-11 fun f(receiver: String, lambda: String.() -> String): String {
-12 return lambda.invoke(receiver)
-12 [LAMBDA RECEIVER] return lambda.invoke(receiver)
-11 [LAMBDA RECEIVER] fun f(receiver: String, lambda: String.() -> String): String {
-4 [LAMBDA RECEIVER] val v1 = f(p, { this })
-4 val v1 = f(p, { this })
-4 val v1 = f(p, { this })
-4 [LAMBDA CALLS] val v1 = f(p, { this })
-11 [LAMBDA CALLS] fun f(receiver: String, lambda: String.() -> String): String {
-12 [LAMBDA CALLS] return lambda.invoke(receiver)
-12 return lambda.invoke(receiver)
+3 fun String.foo(p: String) { (in foo(String) on String)
+4 val v1 = f(p, { this }) (in foo(String) on String)
+11 fun f(receiver: String, lambda: String.() -> String): String { (in f(String, String.() -> String))
+12 return lambda.invoke(receiver) (in f(String, String.() -> String))
+12 [LAMBDA RECEIVER] return lambda.invoke(receiver) (in f(String, String.() -> String))
+11 [LAMBDA RECEIVER] fun f(receiver: String, lambda: String.() -> String): String { (in f(String, String.() -> String))
+4 [LAMBDA RECEIVER] val v1 = f(p, { this }) (in foo(String) on String)
+4 val v1 = f(p, { this }) (in foo(String) on String)
+4 val v1 = f(p, { this }) (in foo(String) on String)
+4 [LAMBDA CALLS] val v1 = f(p, { this }) (in foo(String) on String)
+11 [LAMBDA CALLS] fun f(receiver: String, lambda: String.() -> String): String { (in f(String, String.() -> String))
+12 [LAMBDA CALLS] return lambda.invoke(receiver) (in f(String, String.() -> String))
+12 return lambda.invoke(receiver) (in f(String, String.() -> String))
11 fun f(receiver: String, lambda: String.() -> String): String {
-4 val v1 = f(p, { this })
-4 val v1 = f(p, { this })
-6 val v2 = g("a", "b", p, { p1, p2 -> p2 })
-15 fun g(a: String, b: String, c: String, lambda: String.(String, String) -> String): String {
-16 return lambda.invoke(a, b, c)
-16 [LAMBDA PARAMETER #1] return lambda.invoke(a, b, c)
-15 [LAMBDA PARAMETER #1] fun g(a: String, b: String, c: String, lambda: String.(String, String) -> String): String {
-6 [LAMBDA PARAMETER #1] val v2 = g("a", "b", p, { p1, p2 -> p2 })
-6 val v2 = g("a", "b", p, { p1, p2 -> p2 })
-6 val v2 = g("a", "b", p, { p1, p2 -> p2 })
-6 val v2 = g("a", "b", p, { p1, p2 -> p2 })
-6 [LAMBDA CALLS] val v2 = g("a", "b", p, { p1, p2 -> p2 })
-15 [LAMBDA CALLS] fun g(a: String, b: String, c: String, lambda: String.(String, String) -> String): String {
-16 [LAMBDA CALLS] return lambda.invoke(a, b, c)
-16 return lambda.invoke(a, b, c)
+4 val v1 = f(p, { this }) (in foo(String) on String)
+4 val v1 = f(p, { this }) (in foo(String) on String)
+6 val v2 = g("a", "b", p, { p1, p2 -> p2 }) (in foo(String) on String)
+15 fun g(a: String, b: String, c: String, lambda: String.(String, String) -> String): String { (in g(String, String, String, String.(String, String) -> String))
+16 return lambda.invoke(a, b, c) (in g(String, String, String, String.(String, String) -> String))
+16 [LAMBDA PARAMETER #1] return lambda.invoke(a, b, c) (in g(String, String, String, String.(String, String) -> String))
+15 [LAMBDA PARAMETER #1] fun g(a: String, b: String, c: String, lambda: String.(String, String) -> String): String { (in g(String, String, String, String.(String, String) -> String))
+6 [LAMBDA PARAMETER #1] val v2 = g("a", "b", p, { p1, p2 -> p2 }) (in foo(String) on String)
+6 val v2 = g("a", "b", p, { p1, p2 -> p2 }) (in foo(String) on String)
+6 val v2 = g("a", "b", p, { p1, p2 -> p2 }) (in foo(String) on String)
+6 val v2 = g("a", "b", p, { p1, p2 -> p2 }) (in foo(String) on String)
+6 [LAMBDA CALLS] val v2 = g("a", "b", p, { p1, p2 -> p2 }) (in foo(String) on String)
+15 [LAMBDA CALLS] fun g(a: String, b: String, c: String, lambda: String.(String, String) -> String): String { (in g(String, String, String, String.(String, String) -> String))
+16 [LAMBDA CALLS] return lambda.invoke(a, b, c) (in g(String, String, String, String.(String, String) -> String))
+16 return lambda.invoke(a, b, c) (in g(String, String, String, String.(String, String) -> String))
15 fun g(a: String, b: String, c: String, lambda: String.(String, String) -> String): String {
-6 val v2 = g("a", "b", p, { p1, p2 -> p2 })
-6 val v2 = g("a", "b", p, { p1, p2 -> p2 })
-8 val v3 = inlineF(p, { this })
-19 (INLINE CALL inlineF) inline fun inlineF(receiver: String, lambda: String.() -> String): String {
-20 (INLINE CALL inlineF) return lambda.invoke(receiver)
-20 (INLINE CALL inlineF) [LAMBDA RECEIVER] return lambda.invoke(receiver)
-19 (INLINE CALL inlineF) [LAMBDA RECEIVER] inline fun inlineF(receiver: String, lambda: String.() -> String): String {
-8 [LAMBDA RECEIVER] val v3 = inlineF(p, { this })
-8 val v3 = inlineF(p, { this })
-8 val v3 = inlineF(p, { this })
-8 [LAMBDA CALLS] val v3 = inlineF(p, { this })
-19 (INLINE CALL inlineF) [LAMBDA CALLS] inline fun inlineF(receiver: String, lambda: String.() -> String): String {
-20 (INLINE CALL inlineF) [LAMBDA CALLS] return lambda.invoke(receiver)
-20 (INLINE CALL inlineF) return lambda.invoke(receiver)
-8 val v3 = inlineF(p, { this })
-8 val v3 = inlineF(p, { this })
+6 val v2 = g("a", "b", p, { p1, p2 -> p2 }) (in foo(String) on String)
+6 val v2 = g("a", "b", p, { p1, p2 -> p2 }) (in foo(String) on String)
+8 val v3 = inlineF(p, { this }) (in foo(String) on String)
+19 (INLINE CALL inlineF) inline fun inlineF(receiver: String, lambda: String.() -> String): String { (in inlineF(String, String.() -> String))
+20 (INLINE CALL inlineF) return lambda.invoke(receiver) (in inlineF(String, String.() -> String))
+20 (INLINE CALL inlineF) [LAMBDA RECEIVER] return lambda.invoke(receiver) (in inlineF(String, String.() -> String))
+19 (INLINE CALL inlineF) [LAMBDA RECEIVER] inline fun inlineF(receiver: String, lambda: String.() -> String): String { (in inlineF(String, String.() -> String))
+8 [LAMBDA RECEIVER] val v3 = inlineF(p, { this }) (in foo(String) on String)
+8 val v3 = inlineF(p, { this }) (in foo(String) on String)
+8 val v3 = inlineF(p, { this }) (in foo(String) on String)
+8 [LAMBDA CALLS] val v3 = inlineF(p, { this }) (in foo(String) on String)
+19 (INLINE CALL inlineF) [LAMBDA CALLS] inline fun inlineF(receiver: String, lambda: String.() -> String): String { (in inlineF(String, String.() -> String))
+20 (INLINE CALL inlineF) [LAMBDA CALLS] return lambda.invoke(receiver) (in inlineF(String, String.() -> String))
+20 (INLINE CALL inlineF) return lambda.invoke(receiver) (in inlineF(String, String.() -> String))
+8 val v3 = inlineF(p, { this }) (in foo(String) on String)
+8 val v3 = inlineF(p, { this }) (in foo(String) on String)
diff --git a/idea/testData/slicer/outflow/invokeExtensionLambda2.results.txt b/idea/testData/slicer/outflow/invokeExtensionLambda2.results.txt
index e1b958860b17e..fe4a08cfbd49b 100644
--- a/idea/testData/slicer/outflow/invokeExtensionLambda2.results.txt
+++ b/idea/testData/slicer/outflow/invokeExtensionLambda2.results.txt
@@ -1,20 +1,20 @@
-3 fun String.foo(p: String) {
-4 val v1 = bar(p) { { this } }
-7 (INLINE CALL bar) inline fun bar(x: String, lambda: () -> String.() -> String): String {
-8 (INLINE CALL bar) return lambda()(x)
-8 (INLINE CALL bar) [LAMBDA RECEIVER] return lambda()(x)
-8 (INLINE CALL bar) [LAMBDA IN] [LAMBDA RECEIVER] return lambda()(x)
-7 (INLINE CALL bar) [LAMBDA IN] [LAMBDA RECEIVER] inline fun bar(x: String, lambda: () -> String.() -> String): String {
-4 [LAMBDA IN] [LAMBDA RECEIVER] val v1 = bar(p) { { this } }
-4 [LAMBDA RECEIVER] val v1 = bar(p) { { this } }
-4 [LAMBDA RECEIVER] val v1 = bar(p) { { this } }
-4 val v1 = bar(p) { { this } }
-4 val v1 = bar(p) { { this } }
-4 [LAMBDA CALLS] val v1 = bar(p) { { this } }
-4 [LAMBDA CALLS] val v1 = bar(p) { { this } }
-4 [LAMBDA CALLS] [LAMBDA CALLS] val v1 = bar(p) { { this } }
-7 (INLINE CALL bar) [LAMBDA CALLS] [LAMBDA CALLS] inline fun bar(x: String, lambda: () -> String.() -> String): String {
-8 (INLINE CALL bar) [LAMBDA CALLS] return lambda()(x)
-8 (INLINE CALL bar) return lambda()(x)
-4 val v1 = bar(p) { { this } }
-4 val v1 = bar(p) { { this } }
+3 fun String.foo(p: String) { (in foo(String) on String)
+4 val v1 = bar(p) { { this } } (in foo(String) on String)
+7 (INLINE CALL bar) inline fun bar(x: String, lambda: () -> String.() -> String): String { (in bar(String, () -> String.() -> String))
+8 (INLINE CALL bar) return lambda()(x) (in bar(String, () -> String.() -> String))
+8 (INLINE CALL bar) [LAMBDA RECEIVER] return lambda()(x) (in bar(String, () -> String.() -> String))
+8 (INLINE CALL bar) [LAMBDA IN] [LAMBDA RECEIVER] return lambda()(x) (in bar(String, () -> String.() -> String))
+7 (INLINE CALL bar) [LAMBDA IN] [LAMBDA RECEIVER] inline fun bar(x: String, lambda: () -> String.() -> String): String { (in bar(String, () -> String.() -> String))
+4 [LAMBDA IN] [LAMBDA RECEIVER] val v1 = bar(p) { { this } } (in foo(String) on String)
+4 [LAMBDA RECEIVER] val v1 = bar(p) { { this } } (in foo(String) on String)
+4 [LAMBDA RECEIVER] val v1 = bar(p) { { this } } (in foo(String) on String)
+4 val v1 = bar(p) { { this } } (in foo(String) on String)
+4 val v1 = bar(p) { { this } } (in foo(String) on String)
+4 [LAMBDA CALLS] val v1 = bar(p) { { this } } (in foo(String) on String)
+4 [LAMBDA CALLS] val v1 = bar(p) { { this } } (in foo(String) on String)
+4 [LAMBDA CALLS] [LAMBDA CALLS] val v1 = bar(p) { { this } } (in foo(String) on String)
+7 (INLINE CALL bar) [LAMBDA CALLS] [LAMBDA CALLS] inline fun bar(x: String, lambda: () -> String.() -> String): String { (in bar(String, () -> String.() -> String))
+8 (INLINE CALL bar) [LAMBDA CALLS] return lambda()(x) (in bar(String, () -> String.() -> String))
+8 (INLINE CALL bar) return lambda()(x) (in bar(String, () -> String.() -> String))
+4 val v1 = bar(p) { { this } } (in foo(String) on String)
+4 val v1 = bar(p) { { this } } (in foo(String) on String)
diff --git a/idea/testData/slicer/outflow/invokeExtensionLambda3.results.txt b/idea/testData/slicer/outflow/invokeExtensionLambda3.results.txt
index 9c16a2f114f5f..6467898196819 100644
--- a/idea/testData/slicer/outflow/invokeExtensionLambda3.results.txt
+++ b/idea/testData/slicer/outflow/invokeExtensionLambda3.results.txt
@@ -1,18 +1,18 @@
-3 fun String.foo(p: String) {
-4 val v = bar(p) { this }
-7 fun bar(receiver: T, block: T.() -> R): R {
-9 return receiver.b()
-8 [LAMBDA RECEIVER] val b = block
-8 [LAMBDA RECEIVER] val b = block
-7 [LAMBDA RECEIVER] fun bar(receiver: T, block: T.() -> R): R {
-4 [LAMBDA RECEIVER] val v = bar(p) { this }
-4 val v = bar(p) { this }
-4 val v = bar(p) { this }
-4 [LAMBDA CALLS] val v = bar(p) { this }
-7 [LAMBDA CALLS] fun bar(receiver: T, block: T.() -> R): R {
-8 [LAMBDA CALLS] val b = block
-8 [LAMBDA CALLS] val b = block
-9 return receiver.b()
+3 fun String.foo(p: String) { (in foo(String) on String)
+4 val v = bar(p) { this } (in foo(String) on String)
+7 fun bar(receiver: T, block: T.() -> R): R { (in bar(T, T.() -> R))
+9 return receiver.b() (in bar(T, T.() -> R))
+8 [LAMBDA RECEIVER] val b = block (in bar(T, T.() -> R))
+8 [LAMBDA RECEIVER] val b = block (in bar(T, T.() -> R))
+7 [LAMBDA RECEIVER] fun bar(receiver: T, block: T.() -> R): R { (in bar(T, T.() -> R))
+4 [LAMBDA RECEIVER] val v = bar(p) { this } (in foo(String) on String)
+4 val v = bar(p) { this } (in foo(String) on String)
+4 val v = bar(p) { this } (in foo(String) on String)
+4 [LAMBDA CALLS] val v = bar(p) { this } (in foo(String) on String)
+7 [LAMBDA CALLS] fun bar(receiver: T, block: T.() -> R): R { (in bar(T, T.() -> R))
+8 [LAMBDA CALLS] val b = block (in bar(T, T.() -> R))
+8 [LAMBDA CALLS] val b = block (in bar(T, T.() -> R))
+9 return receiver.b() (in bar(T, T.() -> R))
7 fun bar(receiver: T, block: T.() -> R): R {
-4 val v = bar(p) { this }
-4 val v = bar(p) { this }
+4 val v = bar(p) { this } (in foo(String) on String)
+4 val v = bar(p) { this } (in foo(String) on String)
diff --git a/idea/testData/slicer/outflow/invokeLambdaSecondParam.results.txt b/idea/testData/slicer/outflow/invokeLambdaSecondParam.results.txt
index b685ffa2c3657..f5021ddb90e27 100644
--- a/idea/testData/slicer/outflow/invokeLambdaSecondParam.results.txt
+++ b/idea/testData/slicer/outflow/invokeLambdaSecondParam.results.txt
@@ -1,15 +1,15 @@
-3 fun String.foo(p: String) {
-4 val v = f({ p1, p2 -> p2 }, p)
-7 fun f(lambda: (String, String) -> String, receiver: String): String {
-8 return lambda("a", receiver)
-7 [LAMBDA PARAMETER #1] fun f(lambda: (String, String) -> String, receiver: String): String {
-4 [LAMBDA PARAMETER #1] val v = f({ p1, p2 -> p2 }, p)
-4 val v = f({ p1, p2 -> p2 }, p)
-4 val v = f({ p1, p2 -> p2 }, p)
-4 val v = f({ p1, p2 -> p2 }, p)
-4 [LAMBDA CALLS] val v = f({ p1, p2 -> p2 }, p)
-7 [LAMBDA CALLS] fun f(lambda: (String, String) -> String, receiver: String): String {
-8 return lambda("a", receiver)
+3 fun String.foo(p: String) { (in foo(String) on String)
+4 val v = f({ p1, p2 -> p2 }, p) (in foo(String) on String)
+7 fun f(lambda: (String, String) -> String, receiver: String): String { (in f((String, String) -> String, String))
+8 return lambda("a", receiver) (in f((String, String) -> String, String))
+7 [LAMBDA PARAMETER #1] fun f(lambda: (String, String) -> String, receiver: String): String { (in f((String, String) -> String, String))
+4 [LAMBDA PARAMETER #1] val v = f({ p1, p2 -> p2 }, p) (in foo(String) on String)
+4 val v = f({ p1, p2 -> p2 }, p) (in foo(String) on String)
+4 val v = f({ p1, p2 -> p2 }, p) (in foo(String) on String)
+4 val v = f({ p1, p2 -> p2 }, p) (in foo(String) on String)
+4 [LAMBDA CALLS] val v = f({ p1, p2 -> p2 }, p) (in foo(String) on String)
+7 [LAMBDA CALLS] fun f(lambda: (String, String) -> String, receiver: String): String { (in f((String, String) -> String, String))
+8 return lambda("a", receiver) (in f((String, String) -> String, String))
7 fun f(lambda: (String, String) -> String, receiver: String): String {
-4 val v = f({ p1, p2 -> p2 }, p)
-4 val v = f({ p1, p2 -> p2 }, p)
+4 val v = f({ p1, p2 -> p2 }, p) (in foo(String) on String)
+4 val v = f({ p1, p2 -> p2 }, p) (in foo(String) on String)
diff --git a/idea/testData/slicer/outflow/jvmFieldMemberPropertyJavaUsages.results.txt b/idea/testData/slicer/outflow/jvmFieldMemberPropertyJavaUsages.results.txt
index 1e1f69bf987be..956a2346e2704 100644
--- a/idea/testData/slicer/outflow/jvmFieldMemberPropertyJavaUsages.results.txt
+++ b/idea/testData/slicer/outflow/jvmFieldMemberPropertyJavaUsages.results.txt
@@ -1,3 +1,3 @@
-5 @JvmField val x = 1
+5 @JvmField val x = 1 (in A)
3 int x = new A().x;
3 int x = new A().x;
diff --git a/idea/testData/slicer/outflow/lambdaResult.results.txt b/idea/testData/slicer/outflow/lambdaResult.results.txt
index 77350258f1072..8d23e9149a17b 100644
--- a/idea/testData/slicer/outflow/lambdaResult.results.txt
+++ b/idea/testData/slicer/outflow/lambdaResult.results.txt
@@ -1,8 +1,8 @@
-8 val x = foo { it }
-8 val x = foo { it }
-8 [LAMBDA CALLS] val x = foo { it }
-3 [LAMBDA CALLS] fun foo(f: (Int) -> Int): Int {
-4 return f(1)
+8 val x = foo { it } (in test())
+8 val x = foo { it } (in test())
+8 [LAMBDA CALLS] val x = foo { it } (in test())
+3 [LAMBDA CALLS] fun foo(f: (Int) -> Int): Int { (in foo((Int) -> Int))
+4 return f(1) (in foo((Int) -> Int))
3 fun foo(f: (Int) -> Int): Int {
-8 val x = foo { it }
-8 val x = foo { it }
+8 val x = foo { it } (in test())
+8 val x = foo { it } (in test())
diff --git a/idea/testData/slicer/outflow/lambdaResultWithAssignments.results.txt b/idea/testData/slicer/outflow/lambdaResultWithAssignments.results.txt
index 84511e2460a92..6b81b2b3bbb20 100644
--- a/idea/testData/slicer/outflow/lambdaResultWithAssignments.results.txt
+++ b/idea/testData/slicer/outflow/lambdaResultWithAssignments.results.txt
@@ -1,10 +1,10 @@
-9 val y = foo { it }
-9 val y = foo { it }
-9 [LAMBDA CALLS] val y = foo { it }
-3 [LAMBDA CALLS] fun foo(f: (Int) -> Int): Int {
-4 [LAMBDA CALLS] val x = f
-4 [LAMBDA CALLS] val x = f
-5 return x(1)
+9 val y = foo { it } (in test())
+9 val y = foo { it } (in test())
+9 [LAMBDA CALLS] val y = foo { it } (in test())
+3 [LAMBDA CALLS] fun foo(f: (Int) -> Int): Int { (in foo((Int) -> Int))
+4 [LAMBDA CALLS] val x = f (in foo((Int) -> Int))
+4 [LAMBDA CALLS] val x = f (in foo((Int) -> Int))
+5 return x(1) (in foo((Int) -> Int))
3 fun foo(f: (Int) -> Int): Int {
-9 val y = foo { it }
-9 val y = foo { it }
+9 val y = foo { it } (in test())
+9 val y = foo { it } (in test())
diff --git a/idea/testData/slicer/outflow/lambdaResultWithDirectCall.results.txt b/idea/testData/slicer/outflow/lambdaResultWithDirectCall.results.txt
index 814a232a5ce3e..9c76d2c228e8e 100644
--- a/idea/testData/slicer/outflow/lambdaResultWithDirectCall.results.txt
+++ b/idea/testData/slicer/outflow/lambdaResultWithDirectCall.results.txt
@@ -1,5 +1,5 @@
-4 val x = { 1 }()
-4 val x = { 1 }()
-4 [LAMBDA CALLS] val x = { 1 }()
-4 val x = { 1 }()
-4 val x = { 1 }()
+4 val x = { 1 }() (in test())
+4 val x = { 1 }() (in test())
+4 [LAMBDA CALLS] val x = { 1 }() (in test())
+4 val x = { 1 }() (in test())
+4 val x = { 1 }() (in test())
diff --git a/idea/testData/slicer/outflow/lambdaResultWithDirectCallViaAssignment.results.txt b/idea/testData/slicer/outflow/lambdaResultWithDirectCallViaAssignment.results.txt
index ccdd7eba5c09f..082932e1a15c7 100644
--- a/idea/testData/slicer/outflow/lambdaResultWithDirectCallViaAssignment.results.txt
+++ b/idea/testData/slicer/outflow/lambdaResultWithDirectCallViaAssignment.results.txt
@@ -1,6 +1,6 @@
-4 val f = { 1 }
-4 val f = { 1 }
-4 [LAMBDA CALLS] val f = { 1 }
-4 [LAMBDA CALLS] val f = { 1 }
-5 val x = f()
-5 val x = f()
+4 val f = { 1 } (in test())
+4 val f = { 1 } (in test())
+4 [LAMBDA CALLS] val f = { 1 } (in test())
+4 [LAMBDA CALLS] val f = { 1 } (in test())
+5 val x = f() (in test())
+5 val x = f() (in test())
diff --git a/idea/testData/slicer/outflow/lambdaResultWithInvokeCall.results.txt b/idea/testData/slicer/outflow/lambdaResultWithInvokeCall.results.txt
index 7c633e70c0d18..7ce0b34c3dc9f 100644
--- a/idea/testData/slicer/outflow/lambdaResultWithInvokeCall.results.txt
+++ b/idea/testData/slicer/outflow/lambdaResultWithInvokeCall.results.txt
@@ -1,9 +1,9 @@
-4 val x = foo { 1 }
-4 val x = foo { 1 }
-4 [LAMBDA CALLS] val x = foo { 1 }
-7 [LAMBDA CALLS] fun foo(callback: () -> Int): Int {
-8 [LAMBDA CALLS] return callback.invoke()
-8 return callback.invoke()
+4 val x = foo { 1 } (in test())
+4 val x = foo { 1 } (in test())
+4 [LAMBDA CALLS] val x = foo { 1 } (in test())
+7 [LAMBDA CALLS] fun foo(callback: () -> Int): Int { (in foo(() -> Int))
+8 [LAMBDA CALLS] return callback.invoke() (in foo(() -> Int))
+8 return callback.invoke() (in foo(() -> Int))
7 fun foo(callback: () -> Int): Int {
-4 val x = foo { 1 }
-4 val x = foo { 1 }
+4 val x = foo { 1 } (in test())
+4 val x = foo { 1 } (in test())
diff --git a/idea/testData/slicer/outflow/letResult.results.txt b/idea/testData/slicer/outflow/letResult.results.txt
index 2c332ba0158bf..b6dd152b6fd29 100644
--- a/idea/testData/slicer/outflow/letResult.results.txt
+++ b/idea/testData/slicer/outflow/letResult.results.txt
@@ -1,48 +1,48 @@
-4 fun foo(p: String) {
-5 val v1 = p.let { value -> bar(value) }
-LIB (INLINE CALL let) public inline fun T.let(block: (T) -> R): R {
-LIB (INLINE CALL let) return block(this)
-LIB (INLINE CALL let) [LAMBDA PARAMETER #0] public inline fun T.let(block: (T) -> R): R {
-5 [LAMBDA PARAMETER #0] val v1 = p.let { value -> bar(value) }
-5 val v1 = p.let { value -> bar(value) }
-5 val v1 = p.let { value -> bar(value) }
-17 fun bar(s: String) = s
-17 fun bar(s: String) = s
+4 fun foo(p: String) { (in foo(String))
+5 val v1 = p.let { value -> bar(value) } (in foo(String))
+LIB (INLINE CALL let) public inline fun T.let(block: (T) -> R): R { (in let((T) -> R) on T)
+LIB (INLINE CALL let) return block(this) (in let((T) -> R) on T)
+LIB (INLINE CALL let) [LAMBDA PARAMETER #0] public inline fun T.let(block: (T) -> R): R { (in let((T) -> R) on T)
+5 [LAMBDA PARAMETER #0] val v1 = p.let { value -> bar(value) } (in foo(String))
+5 val v1 = p.let { value -> bar(value) } (in foo(String))
+5 val v1 = p.let { value -> bar(value) } (in foo(String))
+17 fun bar(s: String) = s (in bar(String))
+17 fun bar(s: String) = s (in bar(String))
17 fun bar(s: String) = s
-5 val v1 = p.let { value -> bar(value) }
-5 val v1 = p.let { value -> bar(value) }
-5 [LAMBDA CALLS] val v1 = p.let { value -> bar(value) }
-LIB (INLINE CALL let) [LAMBDA CALLS] public inline fun T.let(block: (T) -> R): R {
-LIB (INLINE CALL let) return block(this)
-5 val v1 = p.let { value -> bar(value) }
-5 val v1 = p.let { value -> bar(value) }
-7 val v2 = p.let { it }
-LIB (INLINE CALL let) public inline fun T.let(block: (T) -> R): R {
-LIB (INLINE CALL let) return block(this)
-LIB (INLINE CALL let) [LAMBDA PARAMETER #0] public inline fun T.let(block: (T) -> R): R {
-7 [LAMBDA PARAMETER #0] val v2 = p.let { it }
-7 val v2 = p.let { it }
-7 val v2 = p.let { it }
-7 [LAMBDA CALLS] val v2 = p.let { it }
-LIB (INLINE CALL let) [LAMBDA CALLS] public inline fun T.let(block: (T) -> R): R {
-LIB (INLINE CALL let) return block(this)
-7 val v2 = p.let { it }
-7 val v2 = p.let { it }
-9 val v3 = p.let {
-LIB (INLINE CALL let) public inline fun T.let(block: (T) -> R): R {
-LIB (INLINE CALL let) return block(this)
-LIB (INLINE CALL let) [LAMBDA PARAMETER #0] public inline fun T.let(block: (T) -> R): R {
-9 [LAMBDA PARAMETER #0] val v3 = p.let {
-14 val v4 = p.let(::zoo)
-LIB (INLINE CALL let) public inline fun T.let(block: (T) -> R): R {
-LIB (INLINE CALL let) return block(this)
-LIB (INLINE CALL let) [LAMBDA PARAMETER #0] public inline fun T.let(block: (T) -> R): R {
-14 [LAMBDA PARAMETER #0] val v4 = p.let(::zoo)
-18 fun zoo(s: String) = s
-18 fun zoo(s: String) = s
+5 val v1 = p.let { value -> bar(value) } (in foo(String))
+5 val v1 = p.let { value -> bar(value) } (in foo(String))
+5 [LAMBDA CALLS] val v1 = p.let { value -> bar(value) } (in foo(String))
+LIB (INLINE CALL let) [LAMBDA CALLS] public inline fun T.let(block: (T) -> R): R { (in let((T) -> R) on T)
+LIB (INLINE CALL let) return block(this) (in let((T) -> R) on T)
+5 val v1 = p.let { value -> bar(value) } (in foo(String))
+5 val v1 = p.let { value -> bar(value) } (in foo(String))
+7 val v2 = p.let { it } (in foo(String))
+LIB (INLINE CALL let) public inline fun T.let(block: (T) -> R): R { (in let((T) -> R) on T)
+LIB (INLINE CALL let) return block(this) (in let((T) -> R) on T)
+LIB (INLINE CALL let) [LAMBDA PARAMETER #0] public inline fun T.let(block: (T) -> R): R { (in let((T) -> R) on T)
+7 [LAMBDA PARAMETER #0] val v2 = p.let { it } (in foo(String))
+7 val v2 = p.let { it } (in foo(String))
+7 val v2 = p.let { it } (in foo(String))
+7 [LAMBDA CALLS] val v2 = p.let { it } (in foo(String))
+LIB (INLINE CALL let) [LAMBDA CALLS] public inline fun T.let(block: (T) -> R): R { (in let((T) -> R) on T)
+LIB (INLINE CALL let) return block(this) (in let((T) -> R) on T)
+7 val v2 = p.let { it } (in foo(String))
+7 val v2 = p.let { it } (in foo(String))
+9 val v3 = p.let { (in foo(String))
+LIB (INLINE CALL let) public inline fun T.let(block: (T) -> R): R { (in let((T) -> R) on T)
+LIB (INLINE CALL let) return block(this) (in let((T) -> R) on T)
+LIB (INLINE CALL let) [LAMBDA PARAMETER #0] public inline fun T.let(block: (T) -> R): R { (in let((T) -> R) on T)
+9 [LAMBDA PARAMETER #0] val v3 = p.let { (in foo(String))
+14 val v4 = p.let(::zoo) (in foo(String))
+LIB (INLINE CALL let) public inline fun T.let(block: (T) -> R): R { (in let((T) -> R) on T)
+LIB (INLINE CALL let) return block(this) (in let((T) -> R) on T)
+LIB (INLINE CALL let) [LAMBDA PARAMETER #0] public inline fun T.let(block: (T) -> R): R { (in let((T) -> R) on T)
+14 [LAMBDA PARAMETER #0] val v4 = p.let(::zoo) (in foo(String))
+18 fun zoo(s: String) = s (in zoo(String))
+18 fun zoo(s: String) = s (in zoo(String))
18 fun zoo(s: String) = s
-14 [LAMBDA CALLS] val v4 = p.let(::zoo)
-LIB (INLINE CALL let) [LAMBDA CALLS] public inline fun T.let(block: (T) -> R): R {
-LIB (INLINE CALL let) return block(this)
-14 val v4 = p.let(::zoo)
-14 val v4 = p.let(::zoo)
+14 [LAMBDA CALLS] val v4 = p.let(::zoo) (in foo(String))
+LIB (INLINE CALL let) [LAMBDA CALLS] public inline fun T.let(block: (T) -> R): R { (in let((T) -> R) on T)
+LIB (INLINE CALL let) return block(this) (in let((T) -> R) on T)
+14 val v4 = p.let(::zoo) (in foo(String))
+14 val v4 = p.let(::zoo) (in foo(String))
diff --git a/idea/testData/slicer/outflow/localVariableUsages.results.txt b/idea/testData/slicer/outflow/localVariableUsages.results.txt
index 7db2d5e587919..6232eee6bedbf 100644
--- a/idea/testData/slicer/outflow/localVariableUsages.results.txt
+++ b/idea/testData/slicer/outflow/localVariableUsages.results.txt
@@ -1,7 +1,7 @@
-6 val x = 1
-8 val y = x
-8 val y = x
-11 z = x
-10 val z: Int
-13 foo(x)
-2 fun foo(n: Int) {
+6 val x = 1 (in test())
+8 val y = x (in test())
+8 val y = x (in test())
+11 z = x (in test())
+10 val z: Int (in test())
+13 foo(x) (in test())
+2 fun foo(n: Int) { (in foo(Int))
diff --git a/idea/testData/slicer/outflow/memberPropertyUsages.results.txt b/idea/testData/slicer/outflow/memberPropertyUsages.results.txt
index 96695f64e53ed..fa82db87d6317 100644
--- a/idea/testData/slicer/outflow/memberPropertyUsages.results.txt
+++ b/idea/testData/slicer/outflow/memberPropertyUsages.results.txt
@@ -1,8 +1,8 @@
-4 val x = 1
+4 val x = 1 (in A)
3 int x = new A().getX();
-6 val y = x
-6 val y = x
-11 z = x
-8 val z: Int
-13 bar(x)
-16 fun bar(m: Int) {
+6 val y = x (in A.y: Int)
+6 val y = x (in A)
+11 z = x (in A)
+8 val z: Int (in A)
+13 bar(x) (in A)
+16 fun bar(m: Int) { (in A.bar(Int))
diff --git a/idea/testData/slicer/outflow/nonInlineLetResult.results.txt b/idea/testData/slicer/outflow/nonInlineLetResult.results.txt
index a0f70e405fac4..a7239ad1c3d69 100644
--- a/idea/testData/slicer/outflow/nonInlineLetResult.results.txt
+++ b/idea/testData/slicer/outflow/nonInlineLetResult.results.txt
@@ -1,33 +1,33 @@
-3 fun foo(p: String) {
-4 val v1 = p.let { value -> bar(value) }
-16 fun T.let(block: (T) -> R): R {
-17 return block(this)
-16 [LAMBDA PARAMETER #0] fun T.let(block: (T) -> R): R {
-4 [LAMBDA PARAMETER #0] val v1 = p.let { value -> bar(value) }
-4 val v1 = p.let { value -> bar(value) }
-4 val v1 = p.let { value -> bar(value) }
-14 fun bar(s: String) = s
-14 fun bar(s: String) = s
+3 fun foo(p: String) { (in foo(String))
+4 val v1 = p.let { value -> bar(value) } (in foo(String))
+16 fun T.let(block: (T) -> R): R { (in let((T) -> R) on T)
+17 return block(this) (in let((T) -> R) on T)
+16 [LAMBDA PARAMETER #0] fun T.let(block: (T) -> R): R { (in let((T) -> R) on T)
+4 [LAMBDA PARAMETER #0] val v1 = p.let { value -> bar(value) } (in foo(String))
+4 val v1 = p.let { value -> bar(value) } (in foo(String))
+4 val v1 = p.let { value -> bar(value) } (in foo(String))
+14 fun bar(s: String) = s (in bar(String))
+14 fun bar(s: String) = s (in bar(String))
14 fun bar(s: String) = s
-4 val v1 = p.let { value -> bar(value) }
-4 val v1 = p.let { value -> bar(value) }
-4 [LAMBDA CALLS] val v1 = p.let { value -> bar(value) }
-16 [LAMBDA CALLS] fun T.let(block: (T) -> R): R {
-17 return block(this)
+4 val v1 = p.let { value -> bar(value) } (in foo(String))
+4 val v1 = p.let { value -> bar(value) } (in foo(String))
+4 [LAMBDA CALLS] val v1 = p.let { value -> bar(value) } (in foo(String))
+16 [LAMBDA CALLS] fun T.let(block: (T) -> R): R { (in let((T) -> R) on T)
+17 return block(this) (in let((T) -> R) on T)
16 fun T.let(block: (T) -> R): R {
-4 val v1 = p.let { value -> bar(value) }
-4 val v1 = p.let { value -> bar(value) }
-6 val v2 = p.let { it }
-6 val v2 = p.let { it }
-8 val v3 = p.let {
-8 val v3 = p.let {
-6 [LAMBDA PARAMETER #0] val v2 = p.let { it }
-6 val v2 = p.let { it }
-6 val v2 = p.let { it }
-6 [LAMBDA CALLS] val v2 = p.let { it }
-16 [LAMBDA CALLS] DUPLICATE: fun T.let(block: (T) -> R): R {
-8 [LAMBDA PARAMETER #0] val v3 = p.let {
-6 val v2 = p.let { it }
-16 DUPLICATE: fun T.let(block: (T) -> R): R {
-8 val v3 = p.let {
-16 DUPLICATE: fun T.let(block: (T) -> R): R {
+4 val v1 = p.let { value -> bar(value) } (in foo(String))
+4 val v1 = p.let { value -> bar(value) } (in foo(String))
+6 val v2 = p.let { it } (in foo(String))
+6 val v2 = p.let { it } (in foo(String))
+8 val v3 = p.let { (in foo(String))
+8 val v3 = p.let { (in foo(String))
+6 [LAMBDA PARAMETER #0] val v2 = p.let { it } (in foo(String))
+6 val v2 = p.let { it } (in foo(String))
+6 val v2 = p.let { it } (in foo(String))
+6 [LAMBDA CALLS] val v2 = p.let { it } (in foo(String))
+16 [LAMBDA CALLS] DUPLICATE: fun T.let(block: (T) -> R): R { (in let((T) -> R) on T)
+8 [LAMBDA PARAMETER #0] val v3 = p.let { (in foo(String))
+6 val v2 = p.let { it } (in foo(String))
+16 DUPLICATE: fun T.let(block: (T) -> R): R { (in let((T) -> R) on T)
+8 val v3 = p.let { (in foo(String))
+16 DUPLICATE: fun T.let(block: (T) -> R): R { (in let((T) -> R) on T)
diff --git a/idea/testData/slicer/outflow/nonLocalReturn.results.txt b/idea/testData/slicer/outflow/nonLocalReturn.results.txt
index 37fcd8ce0cc6e..252767e461abe 100644
--- a/idea/testData/slicer/outflow/nonLocalReturn.results.txt
+++ b/idea/testData/slicer/outflow/nonLocalReturn.results.txt
@@ -1,4 +1,4 @@
-5 fun bar(a: Int): Int = foo(a) { if (it > 0) it else return 0 }
+5 fun bar(a: Int): Int = foo(a) { if (it > 0) it else return 0 } (in bar(Int))
5 fun bar(a: Int): Int = foo(a) { if (it > 0) it else return 0 }
-8 val x = bar(1)
-8 val x = bar(1)
+8 val x = bar(1) (in test())
+8 val x = bar(1) (in test())
diff --git a/idea/testData/slicer/outflow/notNullAssertion.results.txt b/idea/testData/slicer/outflow/notNullAssertion.results.txt
index 755733f317a6b..76044ef856f71 100644
--- a/idea/testData/slicer/outflow/notNullAssertion.results.txt
+++ b/idea/testData/slicer/outflow/notNullAssertion.results.txt
@@ -1,4 +1,4 @@
-3 fun test(s: String?) {
-4 val x = s!!
-4 val x = s!!
-4 val x = s!!
+3 fun test(s: String?) { (in test(String?))
+4 val x = s!! (in test(String?))
+4 val x = s!! (in test(String?))
+4 val x = s!! (in test(String?))
diff --git a/idea/testData/slicer/outflow/nullableLambda.results.txt b/idea/testData/slicer/outflow/nullableLambda.results.txt
index ac54c9bf2f5e4..a35b6a2055c36 100644
--- a/idea/testData/slicer/outflow/nullableLambda.results.txt
+++ b/idea/testData/slicer/outflow/nullableLambda.results.txt
@@ -1,18 +1,18 @@
-3 fun String.foo(p: String) {
-4 val v = bar(p, true, { this })
-7 fun bar(receiver: String, b: Boolean, lambda: (String.() -> String)?): String {
-8 return if (b) lambda!!.invoke(receiver) else ""
-8 [LAMBDA RECEIVER] return if (b) lambda!!.invoke(receiver) else ""
-8 [LAMBDA RECEIVER] return if (b) lambda!!.invoke(receiver) else ""
-7 [LAMBDA RECEIVER] fun bar(receiver: String, b: Boolean, lambda: (String.() -> String)?): String {
-4 [LAMBDA RECEIVER] val v = bar(p, true, { this })
-4 val v = bar(p, true, { this })
-4 val v = bar(p, true, { this })
-4 [LAMBDA CALLS] val v = bar(p, true, { this })
-7 [LAMBDA CALLS] fun bar(receiver: String, b: Boolean, lambda: (String.() -> String)?): String {
-8 [LAMBDA CALLS] return if (b) lambda!!.invoke(receiver) else ""
-8 [LAMBDA CALLS] return if (b) lambda!!.invoke(receiver) else ""
-8 return if (b) lambda!!.invoke(receiver) else ""
+3 fun String.foo(p: String) { (in foo(String) on String)
+4 val v = bar(p, true, { this }) (in foo(String) on String)
+7 fun bar(receiver: String, b: Boolean, lambda: (String.() -> String)?): String { (in bar(String, Boolean, (String.() -> String)?))
+8 return if (b) lambda!!.invoke(receiver) else "" (in bar(String, Boolean, (String.() -> String)?))
+8 [LAMBDA RECEIVER] return if (b) lambda!!.invoke(receiver) else "" (in bar(String, Boolean, (String.() -> String)?))
+8 [LAMBDA RECEIVER] return if (b) lambda!!.invoke(receiver) else "" (in bar(String, Boolean, (String.() -> String)?))
+7 [LAMBDA RECEIVER] fun bar(receiver: String, b: Boolean, lambda: (String.() -> String)?): String { (in bar(String, Boolean, (String.() -> String)?))
+4 [LAMBDA RECEIVER] val v = bar(p, true, { this }) (in foo(String) on String)
+4 val v = bar(p, true, { this }) (in foo(String) on String)
+4 val v = bar(p, true, { this }) (in foo(String) on String)
+4 [LAMBDA CALLS] val v = bar(p, true, { this }) (in foo(String) on String)
+7 [LAMBDA CALLS] fun bar(receiver: String, b: Boolean, lambda: (String.() -> String)?): String { (in bar(String, Boolean, (String.() -> String)?))
+8 [LAMBDA CALLS] return if (b) lambda!!.invoke(receiver) else "" (in bar(String, Boolean, (String.() -> String)?))
+8 [LAMBDA CALLS] return if (b) lambda!!.invoke(receiver) else "" (in bar(String, Boolean, (String.() -> String)?))
+8 return if (b) lambda!!.invoke(receiver) else "" (in bar(String, Boolean, (String.() -> String)?))
7 fun bar(receiver: String, b: Boolean, lambda: (String.() -> String)?): String {
-4 val v = bar(p, true, { this })
-4 val v = bar(p, true, { this })
+4 val v = bar(p, true, { this }) (in foo(String) on String)
+4 val v = bar(p, true, { this }) (in foo(String) on String)
diff --git a/idea/testData/slicer/outflow/openMethodParameter.results.txt b/idea/testData/slicer/outflow/openMethodParameter.results.txt
index 1cf66fd369be2..6daf06c264ae3 100644
--- a/idea/testData/slicer/outflow/openMethodParameter.results.txt
+++ b/idea/testData/slicer/outflow/openMethodParameter.results.txt
@@ -1,5 +1,5 @@
-4 open fun foo(p: String) {
-5 val v = p
-5 val v = p
-10 override fun foo(p: String) {
-11 val v = p + 1
+4 open fun foo(p: String) { (in C.foo(String))
+5 val v = p (in C.foo(String))
+5 val v = p (in C.foo(String))
+10 override fun foo(p: String) { (in D.foo(String))
+11 val v = p + 1 (in D.foo(String))
diff --git a/idea/testData/slicer/outflow/operatorCallDereferences.results.txt b/idea/testData/slicer/outflow/operatorCallDereferences.results.txt
index e5765401183d1..f677345ce5f95 100644
--- a/idea/testData/slicer/outflow/operatorCallDereferences.results.txt
+++ b/idea/testData/slicer/outflow/operatorCallDereferences.results.txt
@@ -1,22 +1,22 @@
-21 var x = A()
-23 DEREFERENCE: +x
-24 DEREFERENCE: x + 1
-25 DEREFERENCE: x++
-26 DEREFERENCE: x += 1
-27 DEREFERENCE: x *= 1
-29 -x
-14 operator fun A.unaryMinus() = this
-14 operator fun A.unaryMinus() = this
+21 var x = A() (in test())
+23 DEREFERENCE: +x (in test())
+24 DEREFERENCE: x + 1 (in test())
+25 DEREFERENCE: x++ (in test())
+26 DEREFERENCE: x += 1 (in test())
+27 DEREFERENCE: x *= 1 (in test())
+29 -x (in test())
+14 operator fun A.unaryMinus() = this (in unaryMinus() on A)
+14 operator fun A.unaryMinus() = this (in unaryMinus() on A)
14 operator fun A.unaryMinus() = this
-29 -x
-30 x - 1
-13 operator fun A.minus(n: Int) = this
-13 operator fun A.minus(n: Int) = this
+29 -x (in test())
+30 x - 1 (in test())
+13 operator fun A.minus(n: Int) = this (in minus(Int) on A)
+13 operator fun A.minus(n: Int) = this (in minus(Int) on A)
13 operator fun A.minus(n: Int) = this
-30 x - 1
-32 x -= 1
-21 DUPLICATE: var x = A()
-33 x /= 1
-16 operator fun A.divAssign(n: Int) {
-17 val v = this
-17 val v = this
+30 x - 1 (in test())
+32 x -= 1 (in test())
+21 DUPLICATE: var x = A() (in test())
+33 x /= 1 (in test())
+16 operator fun A.divAssign(n: Int) { (in divAssign(Int) on A)
+17 val v = this (in divAssign(Int) on A)
+17 val v = this (in divAssign(Int) on A)
diff --git a/idea/testData/slicer/outflow/operatorFunCalls.results.txt b/idea/testData/slicer/outflow/operatorFunCalls.results.txt
index e7599c5943104..e4b32b0bfdd3b 100644
--- a/idea/testData/slicer/outflow/operatorFunCalls.results.txt
+++ b/idea/testData/slicer/outflow/operatorFunCalls.results.txt
@@ -1,3 +1,3 @@
-4 operator fun plus(n: Int) = this
-8 val x = A() + 2
-8 val x = A() + 2
+4 operator fun plus(n: Int) = this (in A)
+8 val x = A() + 2 (in test())
+8 val x = A() + 2 (in test())
diff --git a/idea/testData/slicer/outflow/overridingFunctionResult.results.txt b/idea/testData/slicer/outflow/overridingFunctionResult.results.txt
index 4ba765789a24f..0fa1d15fd0563 100644
--- a/idea/testData/slicer/outflow/overridingFunctionResult.results.txt
+++ b/idea/testData/slicer/outflow/overridingFunctionResult.results.txt
@@ -1,6 +1,6 @@
-8 override fun foo() = 2
-8 override fun foo() = 2
-16 val x = a.foo()
-16 val x = a.foo()
-17 val y = b.foo()
-17 val y = b.foo()
+8 override fun foo() = 2 (in B.foo())
+8 override fun foo() = 2 (in B)
+16 val x = a.foo() (in test(A, B, C))
+16 val x = a.foo() (in test(A, B, C))
+17 val y = b.foo() (in test(A, B, C))
+17 val y = b.foo() (in test(A, B, C))
diff --git a/idea/testData/slicer/outflow/overridingFunctionResultWithJava.results.txt b/idea/testData/slicer/outflow/overridingFunctionResultWithJava.results.txt
index b9e7c7478f834..162e9dad04ff9 100644
--- a/idea/testData/slicer/outflow/overridingFunctionResultWithJava.results.txt
+++ b/idea/testData/slicer/outflow/overridingFunctionResultWithJava.results.txt
@@ -1,10 +1,10 @@
-4 override fun foo() = 2
-4 override fun foo() = 2
+4 override fun foo() = 2 (in B.foo())
+4 override fun foo() = 2 (in B)
2 public int foo() {
-8 val x = a.foo()
-8 val x = a.foo()
-9 val y = b.foo()
-9 val y = b.foo()
-10 val z = c.foo()
-10 val z = c.foo()
-9 DUPLICATE: val y = b.foo()
+8 val x = a.foo() (in test(A, B, C))
+8 val x = a.foo() (in test(A, B, C))
+9 val y = b.foo() (in test(A, B, C))
+9 val y = b.foo() (in test(A, B, C))
+10 val z = c.foo() (in test(A, B, C))
+10 val z = c.foo() (in test(A, B, C))
+9 DUPLICATE: val y = b.foo() (in test(A, B, C))
diff --git a/idea/testData/slicer/outflow/overridingParameter.results.txt b/idea/testData/slicer/outflow/overridingParameter.results.txt
index e178334487a73..f7e19cc886ca2 100644
--- a/idea/testData/slicer/outflow/overridingParameter.results.txt
+++ b/idea/testData/slicer/outflow/overridingParameter.results.txt
@@ -1,8 +1,8 @@
-10 override val foo = 3
-10 override val foo = 3
-14 val x = a.foo
-14 val x = a.foo
-15 val y = b.foo
-15 val y = b.foo
-16 val z = c.foo
-16 val z = c.foo
+10 override val foo = 3 (in C.foo: Int)
+10 override val foo = 3 (in C)
+14 val x = a.foo (in test(A, B, C))
+14 val x = a.foo (in test(A, B, C))
+15 val y = b.foo (in test(A, B, C))
+15 val y = b.foo (in test(A, B, C))
+16 val z = c.foo (in test(A, B, C))
+16 val z = c.foo (in test(A, B, C))
diff --git a/idea/testData/slicer/outflow/overridingPropertyGetterResult.results.txt b/idea/testData/slicer/outflow/overridingPropertyGetterResult.results.txt
index 805baf2d53d0e..c53763122c553 100644
--- a/idea/testData/slicer/outflow/overridingPropertyGetterResult.results.txt
+++ b/idea/testData/slicer/outflow/overridingPropertyGetterResult.results.txt
@@ -1,6 +1,6 @@
-10 get() = 2
-10 get() = 2
-19 val x = a.foo
-19 val x = a.foo
-20 val y = b.foo
-20 val y = b.foo
+10 get() = 2 (in B.foo: Int)
+10 get() = 2 (in B.foo: Int)
+19 val x = a.foo (in test(A, B, C))
+19 val x = a.foo (in test(A, B, C))
+20 val y = b.foo (in test(A, B, C))
+20 val y = b.foo (in test(A, B, C))
diff --git a/idea/testData/slicer/outflow/overridingPropertyResult.results.txt b/idea/testData/slicer/outflow/overridingPropertyResult.results.txt
index 1924d92d93b3a..10923466cdfa5 100644
--- a/idea/testData/slicer/outflow/overridingPropertyResult.results.txt
+++ b/idea/testData/slicer/outflow/overridingPropertyResult.results.txt
@@ -1,6 +1,6 @@
-8 override val foo = 2
-8 override val foo = 2
-16 val x = a.foo
-16 val x = a.foo
-17 val y = b.foo
-17 val y = b.foo
+8 override val foo = 2 (in B.foo: Int)
+8 override val foo = 2 (in B)
+16 val x = a.foo (in test(A, B, C))
+16 val x = a.foo (in test(A, B, C))
+17 val y = b.foo (in test(A, B, C))
+17 val y = b.foo (in test(A, B, C))
diff --git a/idea/testData/slicer/outflow/primaryConstructorCalls.results.txt b/idea/testData/slicer/outflow/primaryConstructorCalls.results.txt
index 4460c75f6475c..51ce9294572ef 100644
--- a/idea/testData/slicer/outflow/primaryConstructorCalls.results.txt
+++ b/idea/testData/slicer/outflow/primaryConstructorCalls.results.txt
@@ -1,8 +1,8 @@
-3 open class A(n: Int) {
+3 open class A(n: Int) { (in A)
3 super(1);
-4 constructor() : this(1)
-7 class B : A(1)
+4 constructor() : this(1) (in constructor A())
+7 class B : A(1) (in B)
7 A a = new A(1);
-10 constructor() : super(1)
-14 val x = A(1)
-14 val x = A(1)
+10 constructor() : super(1) (in constructor C())
+14 val x = A(1) (in test())
+14 val x = A(1) (in test())
diff --git a/idea/testData/slicer/outflow/primaryConstructorParameterUsages.results.txt b/idea/testData/slicer/outflow/primaryConstructorParameterUsages.results.txt
index afcf2c1630c53..38985bc6d5d80 100644
--- a/idea/testData/slicer/outflow/primaryConstructorParameterUsages.results.txt
+++ b/idea/testData/slicer/outflow/primaryConstructorParameterUsages.results.txt
@@ -1,7 +1,7 @@
-3 class A(n: Int) {
-4 val x = n
-4 val x = n
-9 y = n
-6 val y: Int
-11 bar(n)
-14 fun bar(m: Int) {
+3 class A(n: Int) { (in A(Int))
+4 val x = n (in A.x: Int)
+4 val x = n (in A)
+9 y = n (in A)
+6 val y: Int (in A)
+11 bar(n) (in A)
+14 fun bar(m: Int) { (in A.bar(Int))
diff --git a/idea/testData/slicer/outflow/secondaryConstructorCalls.results.txt b/idea/testData/slicer/outflow/secondaryConstructorCalls.results.txt
index 110efd95969b0..a88345ef30ddb 100644
--- a/idea/testData/slicer/outflow/secondaryConstructorCalls.results.txt
+++ b/idea/testData/slicer/outflow/secondaryConstructorCalls.results.txt
@@ -1,8 +1,8 @@
-4 constructor(n: Int)
+4 constructor(n: Int) (in A)
3 super(1);
-6 constructor() : this(1)
+6 constructor() : this(1) (in constructor A())
7 A a = new A(1);
-9 class B : A(1)
-12 constructor() : super(1)
-16 val x = A(1)
-16 val x = A(1)
+9 class B : A(1) (in B)
+12 constructor() : super(1) (in constructor C())
+16 val x = A(1) (in test())
+16 val x = A(1) (in test())
diff --git a/idea/testData/slicer/outflow/simpleCallDereferences.results.txt b/idea/testData/slicer/outflow/simpleCallDereferences.results.txt
index 4c5943be12a9d..7c4729ff878dd 100644
--- a/idea/testData/slicer/outflow/simpleCallDereferences.results.txt
+++ b/idea/testData/slicer/outflow/simpleCallDereferences.results.txt
@@ -1,15 +1,15 @@
-13 val x = A()
-15 DEREFERENCE: x.foo()
-16 DEREFERENCE: x.bar
-17 x.fooExt()
-9 fun A.fooExt() = 1
-18 x.barExt
-10 val A.barExt: Int get() = 2
-20 val y: A? = x
-20 val y: A? = x
-22 DEREFERENCE: y?.foo()
-23 DEREFERENCE: y?.bar
-24 y?.fooExt()
-9 DUPLICATE: fun A.fooExt() = 1
-25 y?.barExt
-10 DUPLICATE: val A.barExt: Int get() = 2
+13 val x = A() (in test())
+15 DEREFERENCE: x.foo() (in test())
+16 DEREFERENCE: x.bar (in test())
+17 x.fooExt() (in test())
+9 fun A.fooExt() = 1 (in fooExt() on A)
+18 x.barExt (in test())
+10 val A.barExt: Int get() = 2 (in barExt: Int on A)
+20 val y: A? = x (in test())
+20 val y: A? = x (in test())
+22 DEREFERENCE: y?.foo() (in test())
+23 DEREFERENCE: y?.bar (in test())
+24 y?.fooExt() (in test())
+9 DUPLICATE: fun A.fooExt() = 1 (in fooExt() on A)
+25 y?.barExt (in test())
+10 DUPLICATE: val A.barExt: Int get() = 2 (in barExt: Int on A)
diff --git a/idea/testData/slicer/outflow/thisInExtensionFunction.results.txt b/idea/testData/slicer/outflow/thisInExtensionFunction.results.txt
index 7c3cbfdabfc16..df83b84937d6a 100644
--- a/idea/testData/slicer/outflow/thisInExtensionFunction.results.txt
+++ b/idea/testData/slicer/outflow/thisInExtensionFunction.results.txt
@@ -1,6 +1,6 @@
-6 val x = "".extensionFun()
-3 fun String.extensionFun(): Any = this
-3 fun String.extensionFun(): Any = this
+6 val x = "".extensionFun() (in foo())
+3 fun String.extensionFun(): Any = this (in extensionFun() on String)
+3 fun String.extensionFun(): Any = this (in extensionFun() on String)
3 fun String.extensionFun(): Any = this
-6 val x = "".extensionFun()
-6 val x = "".extensionFun()
+6 val x = "".extensionFun() (in foo())
+6 val x = "".extensionFun() (in foo())
diff --git a/idea/testData/slicer/outflow/thisInExtensionProperty.results.txt b/idea/testData/slicer/outflow/thisInExtensionProperty.results.txt
index e815e7489ad05..05bfd21f3f755 100644
--- a/idea/testData/slicer/outflow/thisInExtensionProperty.results.txt
+++ b/idea/testData/slicer/outflow/thisInExtensionProperty.results.txt
@@ -1,6 +1,6 @@
-7 val x = "".extensionProp
-3 val String.extensionProp: Any
-4 get() = this
-4 get() = this
-7 val x = "".extensionProp
-7 val x = "".extensionProp
+7 val x = "".extensionProp (in foo())
+3 val String.extensionProp: Any (in extensionProp: Any on String)
+4 get() = this (in extensionProp: Any on String)
+4 get() = this (in extensionProp: Any on String)
+7 val x = "".extensionProp (in foo())
+7 val x = "".extensionProp (in foo())
diff --git a/idea/testData/slicer/outflow/topLevelPropertyUsages.results.txt b/idea/testData/slicer/outflow/topLevelPropertyUsages.results.txt
index 1356fae101ee8..0eb5580a6097c 100644
--- a/idea/testData/slicer/outflow/topLevelPropertyUsages.results.txt
+++ b/idea/testData/slicer/outflow/topLevelPropertyUsages.results.txt
@@ -1,10 +1,10 @@
4 val x = 1
3 int x = TopLevelPropertyUsagesKt.getX();
-6 val y = x
+6 val y = x (in y: Int)
6 val y = x
-9 val y = x
-9 val y = x
-14 z = x
-11 val z: Int
-16 bar(x)
-20 fun bar(m: Int) {
+9 val y = x (in test())
+9 val y = x (in test())
+14 z = x (in test())
+11 val z: Int (in test())
+16 bar(x) (in test())
+20 fun bar(m: Int) { (in bar(Int))
diff --git a/idea/testData/slicer/outflow/usagesInLoopRange.results.txt b/idea/testData/slicer/outflow/usagesInLoopRange.results.txt
index 66cdc62d6f266..ec2e4316fd407 100644
--- a/idea/testData/slicer/outflow/usagesInLoopRange.results.txt
+++ b/idea/testData/slicer/outflow/usagesInLoopRange.results.txt
@@ -1,2 +1,2 @@
-3 fun f(list: List){
-4 for(s in list){}
+3 fun f(list: List){ (in f(List))
+4 for(s in list){} (in f(List))
diff --git a/idea/testData/slicer/outflow/usagesInTemplates.results.txt b/idea/testData/slicer/outflow/usagesInTemplates.results.txt
index 1dfba865a87b2..70ae04971c290 100644
--- a/idea/testData/slicer/outflow/usagesInTemplates.results.txt
+++ b/idea/testData/slicer/outflow/usagesInTemplates.results.txt
@@ -1,5 +1,5 @@
-8 val hello = "Hello"
-9 val v = "hello = $hello"
-10 f1(hello)
-3 fun f1(param: String){
-4 val a = "param = $param"
+8 val hello = "Hello" (in main(Array))
+9 val v = "hello = $hello" (in main(Array))
+10 f1(hello) (in main(Array))
+3 fun f1(param: String){ (in f1(String))
+4 val a = "param = $param" (in f1(String))
diff --git a/idea/testData/slicer/outflow/valParameter.results.txt b/idea/testData/slicer/outflow/valParameter.results.txt
index c6743c5a6c64e..6dc13a2dc2a72 100644
--- a/idea/testData/slicer/outflow/valParameter.results.txt
+++ b/idea/testData/slicer/outflow/valParameter.results.txt
@@ -1,12 +1,12 @@
-3 class A(val n: Int) {
+3 class A(val n: Int) { (in A(Int))
3 int n = new A(1).getN();
-4 val x = n
-4 val x = n
-9 y = n
-6 val y: Int
-11 bar(n)
-14 fun bar(m: Int) {
-15 val z = n
-15 val z = n
-20 val z = A(1).n
-20 val z = A(1).n
+4 val x = n (in A.x: Int)
+4 val x = n (in A)
+9 y = n (in A)
+6 val y: Int (in A)
+11 bar(n) (in A)
+14 fun bar(m: Int) { (in A.bar(Int))
+15 val z = n (in A.bar(Int))
+15 val z = n (in A.bar(Int))
+20 val z = A(1).n (in test())
+20 val z = A(1).n (in test())
diff --git a/idea/testData/slicer/outflow/varParameter.results.txt b/idea/testData/slicer/outflow/varParameter.results.txt
index 5257a670b15ac..632c6ca5e1839 100644
--- a/idea/testData/slicer/outflow/varParameter.results.txt
+++ b/idea/testData/slicer/outflow/varParameter.results.txt
@@ -1,12 +1,12 @@
-3 class A(var n: Int) {
+3 class A(var n: Int) { (in A(Int))
3 int n = new A(1).getN();
-4 val x = n
-4 val x = n
-9 y = n
-6 val y: Int
-11 bar(n)
-14 fun bar(m: Int) {
-15 val z = n
-15 val z = n
-21 val z = A(1).n
-21 val z = A(1).n
+4 val x = n (in A.x: Int)
+4 val x = n (in A)
+9 y = n (in A)
+6 val y: Int (in A)
+11 bar(n) (in A)
+14 fun bar(m: Int) { (in A.bar(Int))
+15 val z = n (in A.bar(Int))
+15 val z = n (in A.bar(Int))
+21 val z = A(1).n (in test())
+21 val z = A(1).n (in test())
diff --git a/idea/testData/slicer/outflow/whenExpression.results.txt b/idea/testData/slicer/outflow/whenExpression.results.txt
index 37352a5023f06..c970b668e87b4 100644
--- a/idea/testData/slicer/outflow/whenExpression.results.txt
+++ b/idea/testData/slicer/outflow/whenExpression.results.txt
@@ -1,3 +1,3 @@
-3 fun test(m: Int, n: Int) {
-6 2 -> n
-4 val x = when (m) {
+3 fun test(m: Int, n: Int) { (in test(Int, Int))
+6 2 -> n (in test(Int, Int))
+4 val x = when (m) { (in test(Int, Int))
diff --git a/idea/testData/slicer/outflow/withResult.results.txt b/idea/testData/slicer/outflow/withResult.results.txt
index 29170a8fcf5e4..21941da07351b 100644
--- a/idea/testData/slicer/outflow/withResult.results.txt
+++ b/idea/testData/slicer/outflow/withResult.results.txt
@@ -1,47 +1,47 @@
-4 fun String.foo(p: String) {
-5 val v1 = with(p) { this }
-LIB (INLINE CALL with) public inline fun with(receiver: T, block: T.() -> R): R {
-LIB (INLINE CALL with) return receiver.block()
-LIB (INLINE CALL with) [LAMBDA RECEIVER] public inline fun with(receiver: T, block: T.() -> R): R {
-5 [LAMBDA RECEIVER] val v1 = with(p) { this }
-5 val v1 = with(p) { this }
-5 val v1 = with(p) { this }
-5 [LAMBDA CALLS] val v1 = with(p) { this }
-LIB (INLINE CALL with) [LAMBDA CALLS] public inline fun with(receiver: T, block: T.() -> R): R {
-LIB (INLINE CALL with) return receiver.block()
-5 val v1 = with(p) { this }
-5 val v1 = with(p) { this }
-7 val v2 = with(p) { bar(this) }
-LIB (INLINE CALL with) public inline fun with(receiver: T, block: T.() -> R): R {
-LIB (INLINE CALL with) return receiver.block()
-LIB (INLINE CALL with) [LAMBDA RECEIVER] public inline fun with(receiver: T, block: T.() -> R): R {
-7 [LAMBDA RECEIVER] val v2 = with(p) { bar(this) }
-7 val v2 = with(p) { bar(this) }
-14 fun bar(s: String) = s
-14 fun bar(s: String) = s
+4 fun String.foo(p: String) { (in foo(String) on String)
+5 val v1 = with(p) { this } (in foo(String) on String)
+LIB (INLINE CALL with) public inline fun with(receiver: T, block: T.() -> R): R { (in with(T, T.() -> R))
+LIB (INLINE CALL with) return receiver.block() (in with(T, T.() -> R))
+LIB (INLINE CALL with) [LAMBDA RECEIVER] public inline fun with(receiver: T, block: T.() -> R): R { (in with(T, T.() -> R))
+5 [LAMBDA RECEIVER] val v1 = with(p) { this } (in foo(String) on String)
+5 val v1 = with(p) { this } (in foo(String) on String)
+5 val v1 = with(p) { this } (in foo(String) on String)
+5 [LAMBDA CALLS] val v1 = with(p) { this } (in foo(String) on String)
+LIB (INLINE CALL with) [LAMBDA CALLS] public inline fun with(receiver: T, block: T.() -> R): R { (in with(T, T.() -> R))
+LIB (INLINE CALL with) return receiver.block() (in with(T, T.() -> R))
+5 val v1 = with(p) { this } (in foo(String) on String)
+5 val v1 = with(p) { this } (in foo(String) on String)
+7 val v2 = with(p) { bar(this) } (in foo(String) on String)
+LIB (INLINE CALL with) public inline fun with(receiver: T, block: T.() -> R): R { (in with(T, T.() -> R))
+LIB (INLINE CALL with) return receiver.block() (in with(T, T.() -> R))
+LIB (INLINE CALL with) [LAMBDA RECEIVER] public inline fun with(receiver: T, block: T.() -> R): R { (in with(T, T.() -> R))
+7 [LAMBDA RECEIVER] val v2 = with(p) { bar(this) } (in foo(String) on String)
+7 val v2 = with(p) { bar(this) } (in foo(String) on String)
+14 fun bar(s: String) = s (in bar(String))
+14 fun bar(s: String) = s (in bar(String))
14 fun bar(s: String) = s
-7 val v2 = with(p) { bar(this) }
-7 val v2 = with(p) { bar(this) }
-7 [LAMBDA CALLS] val v2 = with(p) { bar(this) }
-LIB (INLINE CALL with) [LAMBDA CALLS] public inline fun with(receiver: T, block: T.() -> R): R {
-LIB (INLINE CALL with) return receiver.block()
-7 val v2 = with(p) { bar(this) }
-7 val v2 = with(p) { bar(this) }
-9 val v3 = with(p) { this@foo }
-LIB (INLINE CALL with) public inline fun with(receiver: T, block: T.() -> R): R {
-LIB (INLINE CALL with) return receiver.block()
-LIB (INLINE CALL with) [LAMBDA RECEIVER] public inline fun with(receiver: T, block: T.() -> R): R {
-9 [LAMBDA RECEIVER] val v3 = with(p) { this@foo }
-11 val v4 = with(p, ::zoo)
-LIB (INLINE CALL with) public inline fun with(receiver: T, block: T.() -> R): R {
-LIB (INLINE CALL with) return receiver.block()
-LIB (INLINE CALL with) [LAMBDA RECEIVER] public inline fun with(receiver: T, block: T.() -> R): R {
-11 [LAMBDA RECEIVER] val v4 = with(p, ::zoo)
-15 fun zoo(s: String) = s
-15 fun zoo(s: String) = s
+7 val v2 = with(p) { bar(this) } (in foo(String) on String)
+7 val v2 = with(p) { bar(this) } (in foo(String) on String)
+7 [LAMBDA CALLS] val v2 = with(p) { bar(this) } (in foo(String) on String)
+LIB (INLINE CALL with) [LAMBDA CALLS] public inline fun with(receiver: T, block: T.() -> R): R { (in with(T, T.() -> R))
+LIB (INLINE CALL with) return receiver.block() (in with(T, T.() -> R))
+7 val v2 = with(p) { bar(this) } (in foo(String) on String)
+7 val v2 = with(p) { bar(this) } (in foo(String) on String)
+9 val v3 = with(p) { this@foo } (in foo(String) on String)
+LIB (INLINE CALL with) public inline fun with(receiver: T, block: T.() -> R): R { (in with(T, T.() -> R))
+LIB (INLINE CALL with) return receiver.block() (in with(T, T.() -> R))
+LIB (INLINE CALL with) [LAMBDA RECEIVER] public inline fun with(receiver: T, block: T.() -> R): R { (in with(T, T.() -> R))
+9 [LAMBDA RECEIVER] val v3 = with(p) { this@foo } (in foo(String) on String)
+11 val v4 = with(p, ::zoo) (in foo(String) on String)
+LIB (INLINE CALL with) public inline fun with(receiver: T, block: T.() -> R): R { (in with(T, T.() -> R))
+LIB (INLINE CALL with) return receiver.block() (in with(T, T.() -> R))
+LIB (INLINE CALL with) [LAMBDA RECEIVER] public inline fun with(receiver: T, block: T.() -> R): R { (in with(T, T.() -> R))
+11 [LAMBDA RECEIVER] val v4 = with(p, ::zoo) (in foo(String) on String)
+15 fun zoo(s: String) = s (in zoo(String))
+15 fun zoo(s: String) = s (in zoo(String))
15 fun zoo(s: String) = s
-11 [LAMBDA CALLS] val v4 = with(p, ::zoo)
-LIB (INLINE CALL with) [LAMBDA CALLS] public inline fun with(receiver: T, block: T.() -> R): R {
-LIB (INLINE CALL with) return receiver.block()
-11 val v4 = with(p, ::zoo)
-11 val v4 = with(p, ::zoo)
+11 [LAMBDA CALLS] val v4 = with(p, ::zoo) (in foo(String) on String)
+LIB (INLINE CALL with) [LAMBDA CALLS] public inline fun with(receiver: T, block: T.() -> R): R { (in with(T, T.() -> R))
+LIB (INLINE CALL with) return receiver.block() (in with(T, T.() -> R))
+11 val v4 = with(p, ::zoo) (in foo(String) on String)
+11 val v4 = with(p, ::zoo) (in foo(String) on String)
diff --git a/idea/testData/slicer/outflow/wrongThis.results.txt b/idea/testData/slicer/outflow/wrongThis.results.txt
index ed41caf6f5964..a53c836115a1f 100644
--- a/idea/testData/slicer/outflow/wrongThis.results.txt
+++ b/idea/testData/slicer/outflow/wrongThis.results.txt
@@ -1,3 +1,3 @@
-14 val x = "".extensionFun()
-5 fun String.extensionFun(): Any {
-8 println(this@extensionFun.length)
+14 val x = "".extensionFun() (in C.foo())
+5 fun String.extensionFun(): Any { (in extensionFun() on String)
+8 println(this@extensionFun.length) (in extensionFun() on String)
diff --git a/idea/tests/org/jetbrains/kotlin/idea/slicer/SlicerTestUtil.kt b/idea/tests/org/jetbrains/kotlin/idea/slicer/SlicerTestUtil.kt
index d9c1bb9fe3e1a..c579bd25f5781 100644
--- a/idea/tests/org/jetbrains/kotlin/idea/slicer/SlicerTestUtil.kt
+++ b/idea/tests/org/jetbrains/kotlin/idea/slicer/SlicerTestUtil.kt
@@ -68,22 +68,31 @@ internal fun buildTreeRepresentation(rootNode: SliceNode): String {
} else {
append(chunks.first().render() + " ")
}
- append("\t".repeat(indent))
+
+ repeat(indent) { append('\t') }
+
if (usage is KotlinSliceDereferenceUsage) {
append("DEREFERENCE: ")
}
+
if (usage is KotlinSliceUsage) {
usage.mode.inlineCallStack.forEach {
append("(INLINE CALL ${it.function?.name}) ")
}
usage.mode.behaviourStack.reversed().joinTo(this, separator = "") { it.testPresentationPrefix }
}
- chunks.slice(1 until chunks.size).joinTo(
- this,
- separator = "",
- prefix = if (isDuplicated) "DUPLICATE: " else "",
- postfix = "\n"
- ) { it.render() }
+
+ if (isDuplicated) {
+ append("DUPLICATE: ")
+ }
+
+ chunks.slice(1 until chunks.size).joinTo(this, separator = "") { it.render() }
+
+ KotlinSliceUsageCellRenderer.containerSuffix(usage)?.let {
+ append(" ($it)")
+ }
+
+ append("\n")
}
}