interface Callable {
    fun call(b: Boolean)
}

inline fun run(f: () -> Unit) { f() }

class A {
    fun foo(): String {
        run {
            val x = object : Callable {
                override fun call(b: Boolean) {
                    if (b) {
                        x()
                    } else {
                        try {
                            x()
                        } catch(t: Throwable) {
                        }
                    }
                }
            }
        }
        return "OK"
    }

    private fun x() {}
}

fun box(): String =
        A().foo()