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