import kotlin.reflect.KProperty

class Delegate(val value: String) {
    operator fun provideDelegate(instance: A, property: KProperty<*>): Delegate = Delegate(instance.value)
    operator fun getValue(instance: Any?, property: KProperty<*>) = value
}

class A(val value: String) {
    val result: String by Delegate("Fail")
}

fun box(): String {
    return A("OK").result
}