// TARGET_BACKEND: JVM // WITH_REFLECT import kotlin.reflect.KProperty import kotlin.reflect.jvm.isAccessible import kotlin.test.* object Delegate { var storage = "" operator fun getValue(instance: Any?, property: KProperty<*>) = storage operator fun setValue(instance: Any?, property: KProperty<*>, value: String) { storage = value } } class Foo { var result: String by Delegate } fun box(): String { val foo = Foo() foo.result = "Fail" val d = (Foo::result).apply { isAccessible = true }.getDelegate(foo) as Delegate foo.result = "OK" assertEquals(d, (Foo::result).apply { isAccessible = true }.getDelegate(foo)) return d.getValue(foo, Foo::result) }