Class/object property type (2: 15) var next: A? = A() Function return types (15: 20) fun getNext(): A? { Function return types (36: 16) fun Any.toA(): A? { Local variable declaration (11: 17) val aa: A = a Nested class/object (1: 31) public class X(bar: String? = A.BAR): A() { Nested class/object (3: 26) val myBar: String? = A.BAR Nested class/object (6: 9) A.BAR = "" Nested class/object (7: 9) A.foos() New instance creation (2: 20) var next: A? = A() New instance creation (32: 18) fun X.bar(a: A = A()) { Parameter type (10: 16) fun foo(a: A) { Parameter type (32: 14) fun X.bar(a: A = A()) { Super type qualifier (20: 15) super.foo() Supertype (1: 39) public class X(bar: String? = A.BAR): A() { Supertype (23: 19) class object: A() { Supertype (28: 11) object O: A() { Target type of 'is' operation (37: 24) return if (this is A) this as A else null Usage in cast target type (37: 35) return if (this is A) this as A else null