// !DIAGNOSTICS: -DEBUG_INFO_SMARTCAST class Foo { fun foo(a: Foo): Foo = a var f: Foo? = null } fun main() { val x: Foo? = null val y: Foo? = null x.foo(y) x!!.foo(y) x.foo(y!!) x!!.foo(y!!) val a: Foo? = null val b: Foo? = null val c: Foo? = null a.foo(b.foo(c)) a!!.foo(b.foo(c)) a.foo(b!!.foo(c)) a!!.foo(b!!.foo(c)) a.foo(b.foo(c!!)) a!!.foo(b.foo(c!!)) a.foo(b!!.foo(c!!)) a!!.foo(b!!.foo(c!!)) val z: Foo? = null z!!.foo(z!!) val w: Foo? = null w.f = z (w.f) = z (label@ w.f) = z w!!.f = z w.f = z w!!.f = z w.f.f = z w.f!!.f = z }