class A() { fun action() = "OK" fun infix(a: String) = "O" + a val property = "OK" val a : A get() = A() } fun test1() = A()!!.property fun test2() = (A() as A?)!!.property fun test3() = A()!!.action() fun test4() = (A() as A?)!!.action() fun test5() = (null as A?)!!.action() fun test6() = A().a.a!!.action() fun test7() = 10!!.plus(11) fun test8() = (10 as Int?)!!.plus(11) fun test9() = A()!! infix "K" fun test10() = (A() as A?) !! infix "K" fun test11() = (A() as A?) !! infix("K") fun test12() = A()!! infix ("K") fun box() : String { if(test1() != "OK") return "fail" if(test2() != "OK") return "fail" if(test3() != "OK") return "fail" if(test4() != "OK") return "fail" try { test5() return "fail" } catch(e: NullPointerException) { // } if(test6() != "OK") return "fail" if(test7() != 21) return "fail" if(test8() != 21) return "fail" if(test9() != "OK") return "fail" if(test10() != "OK") return "fail" if(test11() != "OK") return "fail" if(test12() != "OK") return "fail" return "OK" }