Class/object property type (3: 25) var next: Outer.A? = (this@KOuter : Outer).A() Function return types (15: 30) fun getNext(): Outer.A? { Function return types (29: 22) fun Any.toA(): Outer.A? { Local variable declaration (11: 27) val aa: Outer.A = a New instance creation (25: 39) fun KOuter.X.bar(a: Outer.A = Outer().A()) { New instance creation (2: 63) public inner class X(bar: String? = (this@KOuter : Outer).A().bar): Outer.A() { New instance creation (3: 52) var next: Outer.A? = (this@KOuter : Outer).A() New instance creation (4: 52) val myBar: String? = (this@KOuter : Outer).A().bar New instance creation (7: 35) (this@KOuter : Outer).A().bar = "" Parameter type (10: 26) fun foo(a: Outer.A) { Parameter type (25: 27) fun KOuter.X.bar(a: Outer.A = Outer().A()) { Super type qualifier (20: 25) super.foo() Supertype (2: 79) public inner class X(bar: String? = (this@KOuter : Outer).A().bar): Outer.A() { Target type of 'is' operation (30: 30) return if (this is Outer.A) this as Outer.A else null Usage in cast target type (30: 47) return if (this is Outer.A) this as Outer.A else null