package foo

interface C {
    fun f(): String
}

class B(val value: String) : C {
    override fun f() = value
}

val b: Any = B("O")

val x = B("failure1")
val y = B("K")
val z = B("failure2")

fun selector() = 2

class A : C by (b as C)

class D : C by when (selector()) {
    1 -> x
    2 -> y
    else -> z
}

fun box(): String {
    return A().f() + D().f()
}