// EXPECTED_REACHABLE_NODES: 1431 interface I { fun foo(): String? } interface J { fun bar(x: Any): Boolean } inline fun a(): I = object : I { override fun foo(): String? = T::class.simpleName } inline fun b(): J = object : J { override fun bar(x: Any): Boolean = x is T } inline fun c(): () -> String? = { T::class.simpleName } inline fun d(): (Any) -> Boolean = { it is T } fun box(): String { val r1 = a().foo() if (r1 != "C") return "fail1: $r1" val r2 = b() if (!r2.bar(C()) || r2.bar(D())) return "fail2" val r3 = c()() if (r3 != "C") return "fail3: $r3" val r4 = d() if (!r4(C()) || r4(D())) return "fail4" return "OK" } class C class D