// TARGET_BACKEND: JVM_IR // DUMP_IR // FULL_JDK // WITH_REFLECT // FILE: bar/Base.java package bar; import foo.A; public abstract class Base { protected A a = new A("fail"); protected void foo() {} } // FILE: main.kt package foo import kotlin.reflect.jvm.javaField import bar.Base class A(val s: String) class Derived : Base() { override fun foo() { // ir: resolved to fake-override field Derived.a in K1, // but to base field Base.a in K2 // However, box() works correctly in both cases (Derived::a).javaField!![this] = A("OK") } fun box(): String { foo() return a.s } } fun box(): String { return Derived().box() }