// WITH_STDLIB
// MODULE: lib
// FILE: common.kt

class C<T>(var t: T)
class G<T>(var t: T)

var <T> C<T>.live: T
    get() {
        return t
    }
    set(value) {
        t = value
    }

var <T> G<T>.live: T
    get() {
        return t
    }
    set(value) {
        t = value
    }

// MODULE: main(lib)
// FILE: main.kt
import kotlin.reflect.KMutableProperty0

fun qux(text: KMutableProperty0<String>, s: String): String {
    text.set(s)
    return text.get()
}

fun box(): String {
    val c = C("FAIL_C")
    val g = G("FAIL_G")
    return qux(c::live, "O") + qux(g::live, "K")
}
