open class { val x1 = true } internal open class A: () { val x2 = false } annotation class (val x2: Boolean) @(false) internal class B: @(false) A() {} @(true) interface C fun box(): String? { val o1 = () val o2 = A() val o3 = B() if (o1.x1 != true) return null if (o2.x1 != true || o2.x2 != false || o3.x2 != false || o3.x1 != true) return null if (!checkAnnotation("B", "")) return null if (!checkAnnotation("C", "")) return null if (!checkSuperClass(B::class, "A")) return null if (!checkSuperTypeAnnotation(B::class, "A", "")) return null if (!checkClassName(::class, "")) return null if (!checkClassName(::class, "")) return null return "OK" }