classes.kt: # 0| [CompilationUnit] classes # 0| 1: [Class] ClassesKt # 32| 1: [Method] f # 32| 3: [TypeAccess] Unit #-----| 4: (Parameters) # 32| 0: [Parameter] s # 32| 0: [TypeAccess] String # 32| 5: [BlockStmt] { ... } # 158| 2: [Method] fn1 # 158| 3: [TypeAccess] Unit # 158| 5: [BlockStmt] { ... } # 159| 0: [LocalTypeDeclStmt] class ... # 159| 0: [LocalClass] X # 159| 1: [Constructor] X # 159| 5: [BlockStmt] { ... } # 159| 0: [SuperConstructorInvocationStmt] super(...) # 159| 1: [BlockStmt] { ... } # 162| 3: [Method] fn2 # 162| 3: [TypeAccess] Object # 162| 5: [BlockStmt] { ... } # 162| 0: [ReturnStmt] return ... # 162| 0: [StmtExpr] # 162| 0: [BlockStmt] { ... } # 162| 0: [LocalTypeDeclStmt] class ... # 162| 0: [AnonymousClass,LocalClass] new Object(...) { ... } # 162| 1: [Constructor] # 162| 5: [BlockStmt] { ... } # 162| 0: [SuperConstructorInvocationStmt] super(...) # 162| 1: [BlockStmt] { ... } # 162| 1: [ExprStmt] ; # 162| 0: [ClassInstanceExpr] new (...) # 162| -3: [TypeAccess] Object # 2| 2: [Class] ClassOne # 2| 1: [Constructor] ClassOne # 2| 5: [BlockStmt] { ... } # 2| 0: [SuperConstructorInvocationStmt] super(...) # 2| 1: [BlockStmt] { ... } # 4| 3: [Class] ClassTwo # 4| 1: [Constructor] ClassTwo #-----| 4: (Parameters) # 4| 0: [Parameter] arg # 4| 0: [TypeAccess] int # 4| 5: [BlockStmt] { ... } # 4| 0: [SuperConstructorInvocationStmt] super(...) # 4| 1: [BlockStmt] { ... } # 4| 0: [ExprStmt] ; # 4| 0: [KtInitializerAssignExpr] ...=... # 4| 0: [VarAccess] arg # 5| 1: [ExprStmt] ; # 5| 0: [KtInitializerAssignExpr] ...=... # 5| 0: [VarAccess] x # 4| 2: [Method] getArg # 4| 3: [TypeAccess] int # 4| 5: [BlockStmt] { ... } # 4| 0: [ReturnStmt] return ... # 4| 0: [VarAccess] this.arg # 4| -1: [ThisAccess] this # 4| 3: [FieldDeclaration] int arg; # 4| -1: [TypeAccess] int # 4| 0: [VarAccess] arg # 5| 4: [Method] getX # 5| 3: [TypeAccess] int # 5| 5: [BlockStmt] { ... } # 5| 0: [ReturnStmt] return ... # 5| 0: [VarAccess] this.x # 5| -1: [ThisAccess] this # 5| 5: [FieldDeclaration] int x; # 5| -1: [TypeAccess] int # 5| 0: [IntegerLiteral] 3 # 8| 4: [Class] ClassThree # 8| 1: [Constructor] ClassThree # 8| 5: [BlockStmt] { ... } # 8| 0: [SuperConstructorInvocationStmt] super(...) # 8| 1: [BlockStmt] { ... } # 9| 2: [Method] foo # 9| 3: [TypeAccess] Unit #-----| 4: (Parameters) # 9| 0: [Parameter] arg # 9| 0: [TypeAccess] int # 12| 5: [Class] ClassFour # 12| 1: [Constructor] ClassFour # 12| 5: [BlockStmt] { ... } # 12| 0: [SuperConstructorInvocationStmt] super(...) # 12| 1: [BlockStmt] { ... } # 13| 2: [Method] foo # 13| 3: [TypeAccess] Unit #-----| 4: (Parameters) # 13| 0: [Parameter] arg # 13| 0: [TypeAccess] int # 13| 5: [BlockStmt] { ... } # 17| 6: [Class] ClassFive # 17| 1: [Constructor] ClassFive # 17| 5: [BlockStmt] { ... } # 17| 0: [SuperConstructorInvocationStmt] super(...) # 17| 1: [BlockStmt] { ... } # 20| 7: [Interface] IF1 # 21| 1: [Method] funIF1 # 21| 3: [TypeAccess] Unit # 21| 5: [BlockStmt] { ... } # 24| 8: [Interface] IF2 # 25| 1: [Method] funIF2 # 25| 3: [TypeAccess] Unit # 25| 5: [BlockStmt] { ... } # 28| 9: [Class] ClassSix # 28| 1: [Method] funIF1 # 28| 3: [TypeAccess] Unit # 28| 5: [BlockStmt] { ... } # 28| 0: [ReturnStmt] return ... # 28| 0: [MethodCall] funIF1(...) # 28| -1: [SuperAccess] IF1.super # 28| 0: [TypeAccess] IF1 # 28| 2: [Method] funIF2 # 28| 3: [TypeAccess] Unit # 28| 5: [BlockStmt] { ... } # 28| 0: [ReturnStmt] return ... # 28| 0: [MethodCall] funIF2(...) # 28| -1: [SuperAccess] IF2.super # 28| 0: [TypeAccess] IF2 # 28| 3: [Constructor] ClassSix # 28| 5: [BlockStmt] { ... } # 28| 0: [SuperConstructorInvocationStmt] super(...) # 28| 1: [BlockStmt] { ... } # 29| 4: [Constructor] ClassSix #-----| 4: (Parameters) # 29| 0: [Parameter] i # 29| 0: [TypeAccess] int # 29| 5: [BlockStmt] { ... } # 29| 0: [ThisConstructorInvocationStmt] this(...) # 34| 10: [Class] ClassSeven # 35| 1: [Constructor] ClassSeven #-----| 4: (Parameters) # 35| 0: [Parameter] i # 35| 0: [TypeAccess] String # 35| 5: [BlockStmt] { ... } # 35| 0: [SuperConstructorInvocationStmt] super(...) # 35| 1: [BlockStmt] { ... } # 39| 0: [ExprStmt] ; # 39| 0: [MethodCall] f(...) # 39| -1: [TypeAccess] ClassesKt # 39| 0: [StringLiteral] "init1" # 42| 1: [ExprStmt] ; # 42| 0: [KtInitializerAssignExpr] ...=... # 42| 0: [VarAccess] x # 45| 2: [ExprStmt] ; # 45| 0: [MethodCall] f(...) # 45| -1: [TypeAccess] ClassesKt # 45| 0: [StringLiteral] "init2" # 36| 2: [ExprStmt] ; # 36| 0: [MethodCall] f(...) # 36| -1: [TypeAccess] ClassesKt # 36| 0: [VarAccess] i # 42| 2: [Method] getX # 42| 3: [TypeAccess] int # 42| 5: [BlockStmt] { ... } # 42| 0: [ReturnStmt] return ... # 42| 0: [VarAccess] this.x # 42| -1: [ThisAccess] this # 42| 3: [FieldDeclaration] int x; # 42| -1: [TypeAccess] int # 42| 0: [IntegerLiteral] 3 # 49| 11: [Class] Direction # 0| 2: [Method] getEntries # 0| 3: [TypeAccess] EnumEntries # 0| 0: [TypeAccess] Direction # 0| 3: [Method] valueOf # 0| 3: [TypeAccess] Direction #-----| 4: (Parameters) # 0| 0: [Parameter] value # 0| 0: [TypeAccess] String # 0| 4: [Method] values # 0| 3: [TypeAccess] Direction[] # 0| 0: [TypeAccess] Direction # 49| 5: [Constructor] Direction # 49| 5: [BlockStmt] { ... } # 49| 0: [ExprStmt] ; # 49| 0: [ClassInstanceExpr] new Enum(...) # 49| -3: [TypeAccess] Enum # 49| 0: [TypeAccess] Direction # 49| 0: [NullLiteral] null # 49| 1: [IntegerLiteral] 0 # 49| 1: [BlockStmt] { ... } # 50| 6: [FieldDeclaration] Direction NORTH; # 50| -1: [TypeAccess] Direction # 50| 0: [ClassInstanceExpr] new Direction(...) # 50| -3: [TypeAccess] Direction # 50| 7: [FieldDeclaration] Direction SOUTH; # 50| -1: [TypeAccess] Direction # 50| 0: [ClassInstanceExpr] new Direction(...) # 50| -3: [TypeAccess] Direction # 50| 8: [FieldDeclaration] Direction WEST; # 50| -1: [TypeAccess] Direction # 50| 0: [ClassInstanceExpr] new Direction(...) # 50| -3: [TypeAccess] Direction # 50| 9: [FieldDeclaration] Direction EAST; # 50| -1: [TypeAccess] Direction # 50| 0: [ClassInstanceExpr] new Direction(...) # 50| -3: [TypeAccess] Direction # 53| 12: [Class] Color # 0| 2: [Method] getEntries # 0| 3: [TypeAccess] EnumEntries # 0| 0: [TypeAccess] Color # 0| 3: [Method] valueOf # 0| 3: [TypeAccess] Color #-----| 4: (Parameters) # 0| 0: [Parameter] value # 0| 0: [TypeAccess] String # 0| 4: [Method] values # 0| 3: [TypeAccess] Color[] # 0| 0: [TypeAccess] Color # 53| 5: [Constructor] Color #-----| 4: (Parameters) # 53| 0: [Parameter] rgb # 53| 0: [TypeAccess] int # 53| 5: [BlockStmt] { ... } # 53| 0: [ExprStmt] ; # 53| 0: [ClassInstanceExpr] new Enum(...) # 53| -3: [TypeAccess] Enum # 53| 0: [TypeAccess] Color # 53| 0: [NullLiteral] null # 53| 1: [IntegerLiteral] 0 # 53| 1: [BlockStmt] { ... } # 53| 0: [ExprStmt] ; # 53| 0: [KtInitializerAssignExpr] ...=... # 53| 0: [VarAccess] rgb # 53| 6: [Method] getRgb # 53| 3: [TypeAccess] int # 53| 5: [BlockStmt] { ... } # 53| 0: [ReturnStmt] return ... # 53| 0: [VarAccess] this.rgb # 53| -1: [ThisAccess] this # 53| 7: [FieldDeclaration] int rgb; # 53| -1: [TypeAccess] int # 53| 0: [VarAccess] rgb # 54| 8: [FieldDeclaration] Color RED; # 54| -1: [TypeAccess] Color # 54| 0: [ClassInstanceExpr] new Color(...) # 54| -3: [TypeAccess] Color # 54| 0: [IntegerLiteral] 16711680 # 55| 9: [FieldDeclaration] Color GREEN; # 55| -1: [TypeAccess] Color # 55| 0: [ClassInstanceExpr] new Color(...) # 55| -3: [TypeAccess] Color # 55| 0: [IntegerLiteral] 65280 # 56| 10: [FieldDeclaration] Color BLUE; # 56| -1: [TypeAccess] Color # 56| 0: [ClassInstanceExpr] new Color(...) # 56| -3: [TypeAccess] Color # 56| 0: [IntegerLiteral] 255 # 59| 13: [Interface] Interface1 # 60| 14: [Interface] Interface2 # 61| 15: [GenericType,Interface,ParameterizedType] Interface3 #-----| -2: (Generic Parameters) # 61| 0: [TypeVariable] T # 63| 16: [Class] Class1 # 63| 1: [Constructor] Class1 # 63| 5: [BlockStmt] { ... } # 63| 0: [SuperConstructorInvocationStmt] super(...) # 63| 1: [BlockStmt] { ... } # 64| 2: [Method] getObject1 # 64| 3: [TypeAccess] Object #-----| 4: (Parameters) # 64| 0: [Parameter] b # 64| 0: [TypeAccess] boolean # 64| 5: [BlockStmt] { ... } # 65| 0: [ExprStmt] ; # 65| 0: [WhenExpr] when ... # 65| 0: [WhenBranch] ... -> ... # 65| 0: [VarAccess] b # 66| 1: [ReturnStmt] return ... # 66| 0: [StmtExpr] # 66| 0: [BlockStmt] { ... } # 66| 0: [LocalTypeDeclStmt] class ... # 66| 0: [AnonymousClass,LocalClass] new Object(...) { ... } # 66| 1: [Constructor] # 66| 5: [BlockStmt] { ... } # 66| 0: [SuperConstructorInvocationStmt] super(...) # 66| 1: [BlockStmt] { ... } # 66| 1: [ExprStmt] ; # 66| 0: [ClassInstanceExpr] new (...) # 66| -3: [TypeAccess] Object # 65| 1: [WhenBranch] ... -> ... # 65| 0: [BooleanLiteral] true # 68| 1: [ReturnStmt] return ... # 68| 0: [StmtExpr] # 68| 0: [BlockStmt] { ... } # 68| 0: [LocalTypeDeclStmt] class ... # 68| 0: [AnonymousClass,LocalClass] new Object(...) { ... } # 68| 1: [Constructor] # 68| 5: [BlockStmt] { ... } # 68| 0: [SuperConstructorInvocationStmt] super(...) # 68| 1: [BlockStmt] { ... } # 68| 1: [ExprStmt] ; # 68| 0: [ClassInstanceExpr] new (...) # 68| -3: [TypeAccess] Object # 71| 3: [Method] getObject2 # 71| 3: [TypeAccess] Interface1 # 71| 5: [BlockStmt] { ... } # 72| 0: [ReturnStmt] return ... # 72| 0: [StmtExpr] # 72| 0: [BlockStmt] { ... } # 72| 0: [LocalTypeDeclStmt] class ... # 72| 0: [AnonymousClass,LocalClass] new Object(...) { ... } # 72| 1: [Constructor] # 72| 5: [BlockStmt] { ... } # 72| 0: [SuperConstructorInvocationStmt] super(...) # 72| 1: [BlockStmt] { ... } # 73| 0: [ExprStmt] ; # 73| 0: [KtInitializerAssignExpr] ...=... # 73| 0: [VarAccess] x # 73| 2: [Method] getX # 73| 3: [TypeAccess] int # 73| 5: [BlockStmt] { ... } # 73| 0: [ReturnStmt] return ... # 73| 0: [VarAccess] this.x # 73| -1: [ThisAccess] this # 73| 3: [FieldDeclaration] int x; # 73| -1: [TypeAccess] int # 73| 0: [IntegerLiteral] 1 # 74| 4: [Method] foo # 74| 3: [TypeAccess] Object # 74| 5: [BlockStmt] { ... } # 75| 0: [ReturnStmt] return ... # 75| 0: [StmtExpr] # 75| 0: [BlockStmt] { ... } # 75| 0: [LocalTypeDeclStmt] class ... # 75| 0: [AnonymousClass,LocalClass] new Object(...) { ... } # 75| 1: [Constructor] # 75| 5: [BlockStmt] { ... } # 75| 0: [SuperConstructorInvocationStmt] super(...) # 75| 1: [BlockStmt] { ... } # 75| 1: [ExprStmt] ; # 75| 0: [ClassInstanceExpr] new (...) # 75| -3: [TypeAccess] Object # 72| 1: [ExprStmt] ; # 72| 0: [ClassInstanceExpr] new (...) # 72| -3: [TypeAccess] Object # 80| 4: [Method] getObject3 # 80| 3: [TypeAccess] Object # 80| 5: [BlockStmt] { ... } # 81| 0: [ReturnStmt] return ... # 81| 0: [StmtExpr] # 81| 0: [BlockStmt] { ... } # 81| 0: [LocalTypeDeclStmt] class ... # 81| 0: [AnonymousClass,LocalClass] new Interface1(...) { ... } # 81| 1: [Constructor] # 81| 5: [BlockStmt] { ... } # 81| 0: [SuperConstructorInvocationStmt] super(...) # 81| 1: [BlockStmt] { ... } # 81| 1: [ExprStmt] ; # 81| 0: [ClassInstanceExpr] new (...) # 81| -3: [TypeAccess] Interface1 # 84| 5: [Method] getObject4 # 84| 3: [TypeAccess] Object # 84| 5: [BlockStmt] { ... } # 85| 0: [ReturnStmt] return ... # 85| 0: [StmtExpr] # 85| 0: [BlockStmt] { ... } # 85| 0: [LocalTypeDeclStmt] class ... # 85| 0: [AnonymousClass,LocalClass] new Object(...) { ... } # 85| 1: [Constructor] # 85| 5: [BlockStmt] { ... } # 85| 0: [SuperConstructorInvocationStmt] super(...) # 85| 1: [BlockStmt] { ... } # 85| 1: [ExprStmt] ; # 85| 0: [ClassInstanceExpr] new (...) # 85| -3: [TypeAccess] Object # 88| 6: [Method] getObject5 # 88| 3: [TypeAccess] Object # 88| 5: [BlockStmt] { ... } # 89| 0: [ReturnStmt] return ... # 89| 0: [StmtExpr] # 89| 0: [BlockStmt] { ... } # 89| 0: [LocalTypeDeclStmt] class ... # 89| 0: [AnonymousClass,LocalClass] new Interface3(...) { ... } # 89| 1: [Constructor] # 89| 5: [BlockStmt] { ... } # 89| 0: [SuperConstructorInvocationStmt] super(...) # 89| 1: [BlockStmt] { ... } # 89| 1: [ExprStmt] ; # 89| 0: [ClassInstanceExpr] new (...) # 89| -3: [TypeAccess] Interface3 # 93| 17: [Class] pulicClass # 93| 1: [Constructor] pulicClass # 93| 5: [BlockStmt] { ... } # 93| 0: [SuperConstructorInvocationStmt] super(...) # 93| 1: [BlockStmt] { ... } # 94| 18: [Class] privateClass # 94| 1: [Constructor] privateClass # 94| 5: [BlockStmt] { ... } # 94| 0: [SuperConstructorInvocationStmt] super(...) # 94| 1: [BlockStmt] { ... } # 95| 19: [Class] internalClass # 95| 1: [Constructor] internalClass # 95| 5: [BlockStmt] { ... } # 95| 0: [SuperConstructorInvocationStmt] super(...) # 95| 1: [BlockStmt] { ... } # 96| 20: [Class] noExplicitVisibilityClass # 96| 1: [Constructor] noExplicitVisibilityClass # 96| 5: [BlockStmt] { ... } # 96| 0: [SuperConstructorInvocationStmt] super(...) # 96| 1: [BlockStmt] { ... } # 98| 21: [Class] nestedClassVisibilities # 98| 1: [Constructor] nestedClassVisibilities # 98| 5: [BlockStmt] { ... } # 98| 0: [SuperConstructorInvocationStmt] super(...) # 98| 1: [BlockStmt] { ... } # 99| 2: [Class] pulicNestedClass # 99| 1: [Constructor] pulicNestedClass # 99| 5: [BlockStmt] { ... } # 99| 0: [SuperConstructorInvocationStmt] super(...) # 99| 1: [BlockStmt] { ... } # 100| 3: [Class] protectedNestedClass # 100| 1: [Constructor] protectedNestedClass # 100| 5: [BlockStmt] { ... } # 100| 0: [SuperConstructorInvocationStmt] super(...) # 100| 1: [BlockStmt] { ... } # 101| 4: [Class] privateNestedClass # 101| 1: [Constructor] privateNestedClass # 101| 5: [BlockStmt] { ... } # 101| 0: [SuperConstructorInvocationStmt] super(...) # 101| 1: [BlockStmt] { ... } # 102| 5: [Class] internalNestedClass # 102| 1: [Constructor] internalNestedClass # 102| 5: [BlockStmt] { ... } # 102| 0: [SuperConstructorInvocationStmt] super(...) # 102| 1: [BlockStmt] { ... } # 103| 6: [Class] noExplicitVisibilityNestedClass # 103| 1: [Constructor] noExplicitVisibilityNestedClass # 103| 5: [BlockStmt] { ... } # 103| 0: [SuperConstructorInvocationStmt] super(...) # 103| 1: [BlockStmt] { ... } # 106| 22: [Class] sealedClass # 106| 1: [Constructor] sealedClass # 106| 5: [BlockStmt] { ... } # 106| 0: [SuperConstructorInvocationStmt] super(...) # 106| 1: [BlockStmt] { ... } # 107| 23: [Class] openClass # 107| 1: [Constructor] openClass # 107| 5: [BlockStmt] { ... } # 107| 0: [SuperConstructorInvocationStmt] super(...) # 107| 1: [BlockStmt] { ... } # 109| 24: [Class] C1 # 109| 1: [Constructor] C1 # 109| 5: [BlockStmt] { ... } # 109| 0: [SuperConstructorInvocationStmt] super(...) # 109| 1: [BlockStmt] { ... } # 110| 2: [Method] fn1 # 110| 3: [TypeAccess] Unit #-----| 4: (Parameters) # 110| 0: [Parameter] p # 110| 0: [TypeAccess] int # 110| 5: [BlockStmt] { ... } # 111| 0: [LocalTypeDeclStmt] class ... # 111| 0: [Class,GenericType,LocalClass,ParameterizedType] Local1 #-----| -2: (Generic Parameters) # 111| 0: [TypeVariable] T1 # 111| 1: [Constructor] Local1 # 111| 5: [BlockStmt] { ... } # 111| 0: [SuperConstructorInvocationStmt] super(...) # 111| 1: [BlockStmt] { ... } # 112| 2: [Method] foo # 112| 3: [TypeAccess] Unit #-----| 4: (Parameters) # 112| 0: [Parameter] p # 112| 0: [TypeAccess] int # 112| 5: [BlockStmt] { ... } # 114| 1: [ExprStmt] ; # 114| 0: [MethodCall] foo(...) # 114| -1: [ClassInstanceExpr] new Local1(...) # 114| -3: [TypeAccess] Local1 # 114| 0: [TypeAccess] Integer # 114| 0: [VarAccess] p # 117| 3: [Method] fn2 # 117| 3: [TypeAccess] Unit #-----| 4: (Parameters) # 117| 0: [Parameter] p # 117| 0: [TypeAccess] int # 117| 5: [BlockStmt] { ... } # 118| 0: [LocalTypeDeclStmt] class ... # 118| 0: [LocalClass] # 118| 1: [Constructor] # 118| 5: [BlockStmt] { ... } # 118| 0: [SuperConstructorInvocationStmt] super(...) # 118| 2: [Method] localFn # 118| 3: [TypeAccess] Unit # 118| 5: [BlockStmt] { ... } # 119| 0: [LocalTypeDeclStmt] class ... # 119| 0: [Class,GenericType,LocalClass,ParameterizedType] Local2 #-----| -2: (Generic Parameters) # 119| 0: [TypeVariable] T1 # 119| 1: [Constructor] Local2 # 119| 5: [BlockStmt] { ... } # 119| 0: [SuperConstructorInvocationStmt] super(...) # 119| 1: [BlockStmt] { ... } # 120| 2: [Method] foo # 120| 3: [TypeAccess] Unit #-----| 4: (Parameters) # 120| 0: [Parameter] p # 120| 0: [TypeAccess] int # 120| 5: [BlockStmt] { ... } # 122| 1: [ExprStmt] ; # 122| 0: [MethodCall] foo(...) # 122| -1: [ClassInstanceExpr] new Local2(...) # 122| -3: [TypeAccess] Local2 # 122| 0: [TypeAccess] Integer # 122| 0: [VarAccess] p # 126| 4: [Method] fn3 # 126| 3: [TypeAccess] Object #-----| 4: (Parameters) # 126| 0: [Parameter] p # 126| 0: [TypeAccess] int # 126| 5: [BlockStmt] { ... } # 127| 0: [ReturnStmt] return ... # 127| 0: [StmtExpr] # 127| 0: [BlockStmt] { ... } # 127| 0: [LocalTypeDeclStmt] class ... # 127| 0: [AnonymousClass,LocalClass] new Object(...) { ... } # 127| 1: [Constructor] # 127| 5: [BlockStmt] { ... } # 127| 0: [SuperConstructorInvocationStmt] super(...) # 127| 1: [BlockStmt] { ... } # 128| 2: [Method] fn # 128| 3: [TypeAccess] Unit # 128| 5: [BlockStmt] { ... } # 129| 0: [LocalTypeDeclStmt] class ... # 129| 0: [Class,GenericType,LocalClass,ParameterizedType] Local3 #-----| -2: (Generic Parameters) # 129| 0: [TypeVariable] T1 # 129| 1: [Constructor] Local3 # 129| 5: [BlockStmt] { ... } # 129| 0: [SuperConstructorInvocationStmt] super(...) # 129| 1: [BlockStmt] { ... } # 130| 2: [Method] foo # 130| 3: [TypeAccess] Unit #-----| 4: (Parameters) # 130| 0: [Parameter] p # 130| 0: [TypeAccess] int # 130| 5: [BlockStmt] { ... } # 132| 1: [ExprStmt] ; # 132| 0: [MethodCall] foo(...) # 132| -1: [ClassInstanceExpr] new Local3(...) # 132| -3: [TypeAccess] Local3 # 132| 0: [TypeAccess] Integer # 132| 0: [VarAccess] p # 127| 1: [ExprStmt] ; # 127| 0: [ClassInstanceExpr] new (...) # 127| -3: [TypeAccess] Object # 138| 25: [Class,GenericType,ParameterizedType] Cl0 #-----| -2: (Generic Parameters) # 138| 0: [TypeVariable] U0 # 138| 1: [Constructor] Cl0 # 138| 5: [BlockStmt] { ... } # 138| 0: [SuperConstructorInvocationStmt] super(...) # 138| 1: [BlockStmt] { ... } # 139| 2: [Method] func1 #-----| 2: (Generic Parameters) # 139| 0: [TypeVariable] U1 # 139| 3: [TypeAccess] Unit # 139| 5: [BlockStmt] { ... } # 140| 0: [LocalTypeDeclStmt] class ... # 140| 0: [LocalClass] # 140| 1: [Constructor] # 140| 5: [BlockStmt] { ... } # 140| 0: [SuperConstructorInvocationStmt] super(...) # 140| 2: [Method] func2 #-----| 2: (Generic Parameters) # 140| 0: [TypeVariable] U2 # 140| 3: [TypeAccess] Unit # 140| 5: [BlockStmt] { ... } # 141| 0: [LocalTypeDeclStmt] class ... # 141| 0: [Class,GenericType,LocalClass,ParameterizedType] Cl1 #-----| -2: (Generic Parameters) # 141| 0: [TypeVariable] U3 # 141| 1: [Constructor] Cl1 # 141| 5: [BlockStmt] { ... } # 141| 0: [SuperConstructorInvocationStmt] super(...) # 141| 1: [BlockStmt] { ... } # 142| 2: [Method] fn # 142| 3: [TypeAccess] Unit # 142| 5: [BlockStmt] { ... } # 143| 0: [LocalVariableDeclStmt] var ...; # 143| 1: [LocalVariableDeclExpr] x # 143| 0: [ClassInstanceExpr] new Cl1(...) # 143| -3: [TypeAccess] Cl1 # 143| 0: [TypeAccess] U3 # 150| 26: [Class,GenericType,ParameterizedType] Cl00 #-----| -2: (Generic Parameters) # 150| 0: [TypeVariable] U0 # 150| 1: [Constructor] Cl00 # 150| 5: [BlockStmt] { ... } # 150| 0: [SuperConstructorInvocationStmt] super(...) # 150| 1: [BlockStmt] { ... } # 151| 2: [Class,GenericType,ParameterizedType] Cl01 #-----| -2: (Generic Parameters) # 151| 0: [TypeVariable] U1 # 151| 1: [Constructor] Cl01 # 151| 5: [BlockStmt] { ... } # 151| 0: [SuperConstructorInvocationStmt] super(...) # 151| 1: [BlockStmt] { ... } # 152| 2: [Method] fn # 152| 3: [TypeAccess] Unit # 152| 5: [BlockStmt] { ... } # 153| 0: [LocalVariableDeclStmt] var ...; # 153| 1: [LocalVariableDeclExpr] x # 153| 0: [ClassInstanceExpr] new Cl01(...) # 153| -3: [TypeAccess] Cl01 # 153| 0: [TypeAccess] U1 generic_anonymous.kt: # 0| [CompilationUnit] generic_anonymous # 0| 1: [Class] Generic_anonymousKt # 11| 1: [Method] stringIdentity # 11| 3: [TypeAccess] String #-----| 4: (Parameters) # 11| 0: [Parameter] s # 11| 0: [TypeAccess] String # 11| 5: [BlockStmt] { ... } # 11| 0: [ReturnStmt] return ... # 11| 0: [MethodCall] get(...) # 11| -1: [ClassInstanceExpr] new Generic(...) # 11| -3: [TypeAccess] Generic # 11| 0: [TypeAccess] String # 11| 0: [VarAccess] s # 13| 2: [Method] intIdentity # 13| 3: [TypeAccess] int #-----| 4: (Parameters) # 13| 0: [Parameter] i # 13| 0: [TypeAccess] int # 13| 5: [BlockStmt] { ... } # 13| 0: [ReturnStmt] return ... # 13| 0: [MethodCall] get(...) # 13| -1: [ClassInstanceExpr] new Generic(...) # 13| -3: [TypeAccess] Generic # 13| 0: [TypeAccess] Integer # 13| 0: [VarAccess] i # 1| 2: [Class,GenericType,ParameterizedType] Generic #-----| -2: (Generic Parameters) # 1| 0: [TypeVariable] T # 1| 1: [Constructor] Generic #-----| 4: (Parameters) # 1| 0: [Parameter] t # 1| 0: [TypeAccess] T # 1| 5: [BlockStmt] { ... } # 1| 0: [SuperConstructorInvocationStmt] super(...) # 1| 1: [BlockStmt] { ... } # 1| 0: [ExprStmt] ; # 1| 0: [KtInitializerAssignExpr] ...=... # 1| 0: [VarAccess] t # 3| 1: [ExprStmt] ; # 3| 0: [KtInitializerAssignExpr] ...=... # 3| 0: [VarAccess] x # 1| 2: [FieldDeclaration] T t; # 1| -1: [TypeAccess] T # 1| 0: [VarAccess] t # 1| 3: [Method] getT # 1| 3: [TypeAccess] T # 1| 5: [BlockStmt] { ... } # 1| 0: [ReturnStmt] return ... # 1| 0: [VarAccess] this.t # 1| -1: [ThisAccess] this # 3| 4: [FieldDeclaration] new Object(...) { ... } x; # 3| -1: [TypeAccess] new Object(...) { ... } # 3| 0: [TypeAccess] T # 3| 0: [StmtExpr] # 3| 0: [BlockStmt] { ... } # 3| 0: [LocalTypeDeclStmt] class ... # 3| 0: [AnonymousClass,LocalClass] new Object(...) { ... } # 3| 1: [Constructor] # 3| 5: [BlockStmt] { ... } # 3| 0: [SuperConstructorInvocationStmt] super(...) # 3| 1: [BlockStmt] { ... } # 4| 0: [ExprStmt] ; # 4| 0: [KtInitializerAssignExpr] ...=... # 4| 0: [VarAccess] member # 4| 2: [FieldDeclaration] T member; # 4| -1: [TypeAccess] T # 4| 0: [MethodCall] getT(...) # 4| -1: [ThisAccess] Generic.this # 4| 0: [TypeAccess] Generic # 4| 3: [Method] getMember # 4| 3: [TypeAccess] T # 4| 5: [BlockStmt] { ... } # 4| 0: [ReturnStmt] return ... # 4| 0: [VarAccess] this.member # 4| -1: [ThisAccess] this # 3| 1: [ExprStmt] ; # 3| 0: [ClassInstanceExpr] new (...) # 3| -3: [TypeAccess] Object # 3| 5: [Method] getX$private # 3| 3: [TypeAccess] new Object(...) { ... } # 3| 0: [TypeAccess] T # 3| 5: [BlockStmt] { ... } # 3| 0: [ReturnStmt] return ... # 3| 0: [VarAccess] this.x # 3| -1: [ThisAccess] this # 7| 6: [Method] get # 7| 3: [TypeAccess] T # 7| 5: [BlockStmt] { ... } # 7| 0: [ReturnStmt] return ... # 7| 0: [MethodCall] getMember(...) # 7| -1: [MethodCall] getX$private(...) # 7| -1: [ThisAccess] this # 15| 4: [Class,GenericType,ParameterizedType] Outer #-----| -2: (Generic Parameters) # 15| 0: [TypeVariable] T0 # 15| 6: [Constructor] Outer # 15| 5: [BlockStmt] { ... } # 15| 0: [SuperConstructorInvocationStmt] super(...) # 15| 1: [BlockStmt] { ... } # 16| 7: [GenericType,Interface,ParameterizedType] C0 #-----| -2: (Generic Parameters) # 16| 0: [TypeVariable] T0 # 17| 1: [Method] fn0 # 17| 3: [TypeAccess] T0 # 17| 5: [BlockStmt] { ... } # 17| 0: [ReturnStmt] return ... # 17| 0: [NullLiteral] null # 20| 8: [GenericType,Interface,ParameterizedType] C1 #-----| -2: (Generic Parameters) # 20| 0: [TypeVariable] T1 # 21| 1: [Method] fn1 # 21| 3: [TypeAccess] T1 # 21| 5: [BlockStmt] { ... } # 21| 0: [ReturnStmt] return ... # 21| 0: [NullLiteral] null # 24| 9: [Method] func1 #-----| 2: (Generic Parameters) # 24| 0: [TypeVariable] U2 # 24| 3: [TypeAccess] Unit # 24| 5: [BlockStmt] { ... } # 25| 0: [LocalTypeDeclStmt] class ... # 25| 0: [LocalClass] # 25| 1: [Constructor] # 25| 5: [BlockStmt] { ... } # 25| 0: [SuperConstructorInvocationStmt] super(...) # 25| 2: [Method] func2 #-----| 2: (Generic Parameters) # 25| 0: [TypeVariable] U3 # 25| 3: [TypeAccess] Unit # 25| 5: [BlockStmt] { ... } # 26| 0: [ExprStmt] ; # 26| 0: [ImplicitCoercionToUnitExpr] # 26| 0: [TypeAccess] Unit # 26| 1: [StmtExpr] # 26| 0: [BlockStmt] { ... } # 26| 0: [LocalTypeDeclStmt] class ... # 26| 0: [AnonymousClass,LocalClass] new Object(...) { ... } # 26| 1: [Constructor] # 26| 5: [BlockStmt] { ... } # 26| 0: [SuperConstructorInvocationStmt] super(...) # 26| 1: [BlockStmt] { ... } # 26| 2: [Method] fn0 # 26| 3: [TypeAccess] U2 # 26| 5: [BlockStmt] { ... } # 26| 0: [ReturnStmt] return ... # 26| 0: [MethodCall] fn0(...) # 26| -1: [SuperAccess] C0.super # 26| 0: [TypeAccess] C0 # 26| 3: [Method] fn1 # 26| 3: [TypeAccess] U3 # 26| 5: [BlockStmt] { ... } # 26| 0: [ReturnStmt] return ... # 26| 0: [MethodCall] fn1(...) # 26| -1: [SuperAccess] C1.super # 26| 0: [TypeAccess] C1 # 26| 1: [ExprStmt] ; # 26| 0: [ClassInstanceExpr] new (...) # 26| -3: [TypeAccess] Object # 27| 1: [ExprStmt] ; # 27| 0: [ImplicitCoercionToUnitExpr] # 27| 0: [TypeAccess] Unit # 27| 1: [StmtExpr] # 27| 0: [BlockStmt] { ... } # 27| 0: [LocalTypeDeclStmt] class ... # 27| 0: [AnonymousClass,LocalClass] new Object(...) { ... } # 27| 1: [Constructor] # 27| 5: [BlockStmt] { ... } # 27| 0: [SuperConstructorInvocationStmt] super(...) # 27| 1: [BlockStmt] { ... } # 27| 2: [Method] fn0 # 27| 3: [TypeAccess] U2 # 27| 5: [BlockStmt] { ... } # 27| 0: [ReturnStmt] return ... # 27| 0: [MethodCall] fn0(...) # 27| -1: [SuperAccess] C0.super # 27| 0: [TypeAccess] C0 # 27| 3: [Method] fn1 # 27| 3: [TypeAccess] U2 # 27| 5: [BlockStmt] { ... } # 27| 0: [ReturnStmt] return ... # 27| 0: [MethodCall] fn1(...) # 27| -1: [SuperAccess] C1.super # 27| 0: [TypeAccess] C1 # 27| 1: [ExprStmt] ; # 27| 0: [ClassInstanceExpr] new (...) # 27| -3: [TypeAccess] Object # 28| 2: [ExprStmt] ; # 28| 0: [ImplicitCoercionToUnitExpr] # 28| 0: [TypeAccess] Unit # 28| 1: [StmtExpr] # 28| 0: [BlockStmt] { ... } # 28| 0: [LocalTypeDeclStmt] class ... # 28| 0: [AnonymousClass,LocalClass] new Object(...) { ... } # 28| 1: [Constructor] # 28| 5: [BlockStmt] { ... } # 28| 0: [SuperConstructorInvocationStmt] super(...) # 28| 1: [BlockStmt] { ... } # 28| 2: [Method] fn0 # 28| 3: [TypeAccess] U2 # 28| 5: [BlockStmt] { ... } # 28| 0: [ReturnStmt] return ... # 28| 0: [MethodCall] fn0(...) # 28| -1: [SuperAccess] C0.super # 28| 0: [TypeAccess] C0 # 28| 3: [Method] fn1 # 28| 3: [TypeAccess] String # 28| 5: [BlockStmt] { ... } # 28| 0: [ReturnStmt] return ... # 28| 0: [MethodCall] fn1(...) # 28| -1: [SuperAccess] C1.super # 28| 0: [TypeAccess] C1 # 28| 1: [ExprStmt] ; # 28| 0: [ClassInstanceExpr] new (...) # 28| -3: [TypeAccess] Object # 29| 3: [ExprStmt] ; # 29| 0: [ImplicitCoercionToUnitExpr] # 29| 0: [TypeAccess] Unit # 29| 1: [StmtExpr] # 29| 0: [BlockStmt] { ... } # 29| 0: [LocalTypeDeclStmt] class ... # 29| 0: [AnonymousClass,LocalClass] new C0(...) { ... } # 29| 1: [Constructor] # 29| 5: [BlockStmt] { ... } # 29| 0: [SuperConstructorInvocationStmt] super(...) # 29| 1: [BlockStmt] { ... } # 29| 2: [Method] fn0 # 29| 3: [TypeAccess] U2 # 29| 5: [BlockStmt] { ... } # 29| 0: [ReturnStmt] return ... # 29| 0: [MethodCall] fn0(...) # 29| -1: [SuperAccess] C0.super # 29| 0: [TypeAccess] C0 # 29| 1: [ExprStmt] ; # 29| 0: [ClassInstanceExpr] new (...) # 29| -3: [TypeAccess] C0 # 30| 4: [ExprStmt] ; # 30| 0: [ImplicitCoercionToUnitExpr] # 30| 0: [TypeAccess] Unit # 30| 1: [StmtExpr] # 30| 0: [BlockStmt] { ... } # 30| 0: [LocalTypeDeclStmt] class ... # 30| 0: [AnonymousClass,LocalClass] new C0(...) { ... } # 30| 1: [Constructor] # 30| 5: [BlockStmt] { ... } # 30| 0: [SuperConstructorInvocationStmt] super(...) # 30| 1: [BlockStmt] { ... } # 30| 2: [Method] fn0 # 30| 3: [TypeAccess] String # 30| 5: [BlockStmt] { ... } # 30| 0: [ReturnStmt] return ... # 30| 0: [MethodCall] fn0(...) # 30| -1: [SuperAccess] C0.super # 30| 0: [TypeAccess] C0 # 30| 1: [ExprStmt] ; # 30| 0: [ClassInstanceExpr] new (...) # 30| -3: [TypeAccess] C0 localClassField.kt: # 0| [CompilationUnit] localClassField # 1| 1: [Class] A # 1| 1: [Constructor] A # 1| 5: [BlockStmt] { ... } # 1| 0: [SuperConstructorInvocationStmt] super(...) # 1| 1: [BlockStmt] { ... } # 2| 0: [ExprStmt] ; # 2| 0: [KtInitializerAssignExpr] ...=... # 2| 0: [VarAccess] x # 7| 1: [ExprStmt] ; # 7| 0: [KtInitializerAssignExpr] ...=... # 7| 0: [VarAccess] y # 2| 2: [FieldDeclaration] Object x; # 2| -1: [TypeAccess] Object # 2| 0: [WhenExpr] when ... # 2| 0: [WhenBranch] ... -> ... # 2| 0: [BooleanLiteral] true # 2| 1: [BlockStmt] { ... } # 3| 0: [LocalTypeDeclStmt] class ... # 3| 0: [LocalClass] L # 3| 1: [Constructor] L # 3| 5: [BlockStmt] { ... } # 3| 0: [SuperConstructorInvocationStmt] super(...) # 3| 1: [BlockStmt] { ... } # 4| 1: [ExprStmt] ; # 4| 0: [ClassInstanceExpr] new L(...) # 4| -3: [TypeAccess] L # 2| 1: [WhenBranch] ... -> ... # 2| 0: [BooleanLiteral] true # 5| 1: [BlockStmt] { ... } # 2| 3: [Method] getX # 2| 3: [TypeAccess] Object # 2| 5: [BlockStmt] { ... } # 2| 0: [ReturnStmt] return ... # 2| 0: [VarAccess] this.x # 2| -1: [ThisAccess] this # 7| 4: [FieldDeclaration] Object y; # 7| -1: [TypeAccess] Object # 7| 0: [WhenExpr] when ... # 7| 0: [WhenBranch] ... -> ... # 7| 0: [BooleanLiteral] true # 7| 1: [BlockStmt] { ... } # 8| 0: [LocalTypeDeclStmt] class ... # 8| 0: [LocalClass] L # 8| 1: [Constructor] L # 8| 5: [BlockStmt] { ... } # 8| 0: [SuperConstructorInvocationStmt] super(...) # 8| 1: [BlockStmt] { ... } # 9| 1: [ExprStmt] ; # 9| 0: [ClassInstanceExpr] new L(...) # 9| -3: [TypeAccess] L # 7| 1: [WhenBranch] ... -> ... # 7| 0: [BooleanLiteral] true # 10| 1: [BlockStmt] { ... } # 7| 5: [Method] getY # 7| 3: [TypeAccess] Object # 7| 5: [BlockStmt] { ... } # 7| 0: [ReturnStmt] return ... # 7| 0: [VarAccess] this.y # 7| -1: [ThisAccess] this local_anonymous.kt: # 0| [CompilationUnit] local_anonymous # 3| 1: [Class] Class1 # 3| 1: [Constructor] Class1 # 3| 5: [BlockStmt] { ... } # 3| 0: [SuperConstructorInvocationStmt] super(...) # 3| 1: [BlockStmt] { ... } # 4| 2: [Method] fn1 # 4| 3: [TypeAccess] Object # 4| 5: [BlockStmt] { ... } # 5| 0: [ReturnStmt] return ... # 5| 0: [StmtExpr] # 5| 0: [BlockStmt] { ... } # 5| 0: [LocalTypeDeclStmt] class ... # 5| 0: [AnonymousClass,LocalClass] new Object(...) { ... } # 5| 1: [Constructor] # 5| 5: [BlockStmt] { ... } # 5| 0: [SuperConstructorInvocationStmt] super(...) # 5| 1: [BlockStmt] { ... } # 6| 2: [Method] fn # 6| 3: [TypeAccess] Unit # 6| 5: [BlockStmt] { ... } # 5| 1: [ExprStmt] ; # 5| 0: [ClassInstanceExpr] new (...) # 5| -3: [TypeAccess] Object # 10| 3: [Method] fn2 # 10| 3: [TypeAccess] Unit # 10| 5: [BlockStmt] { ... } # 11| 0: [LocalTypeDeclStmt] class ... # 11| 0: [LocalClass] # 11| 1: [Constructor] # 11| 5: [BlockStmt] { ... } # 11| 0: [SuperConstructorInvocationStmt] super(...) # 11| 2: [Method] fnLocal # 11| 3: [TypeAccess] Unit # 11| 5: [BlockStmt] { ... } # 12| 1: [ExprStmt] ; # 12| 0: [MethodCall] fnLocal(...) # 12| -1: [ClassInstanceExpr] new (...) # 12| -3: [TypeAccess] Object # 15| 4: [Method] fn3 # 15| 3: [TypeAccess] Unit # 15| 5: [BlockStmt] { ... } # 16| 0: [LocalVariableDeclStmt] var ...; # 16| 1: [LocalVariableDeclExpr] lambda1 # 16| 0: [LambdaExpr] ...->... # 16| -4: [AnonymousClass] new Function2(...) { ... } # 16| 1: [Constructor] # 16| 5: [BlockStmt] { ... } # 16| 0: [SuperConstructorInvocationStmt] super(...) # 16| 2: [Method] invoke # 16| 3: [TypeAccess] int #-----| 4: (Parameters) # 16| 0: [Parameter] a # 16| 0: [TypeAccess] int # 16| 1: [Parameter] b # 16| 0: [TypeAccess] int # 16| 5: [BlockStmt] { ... } # 16| 0: [ReturnStmt] return ... # 16| 0: [AddExpr] ... + ... # 16| 0: [VarAccess] a # 16| 1: [VarAccess] b # 16| -3: [TypeAccess] Function2 # 16| 0: [TypeAccess] Integer # 16| 1: [TypeAccess] Integer # 16| 2: [TypeAccess] Integer # 17| 1: [LocalVariableDeclStmt] var ...; # 17| 1: [LocalVariableDeclExpr] lambda2 # 17| 0: [LambdaExpr] ...->... # 17| -4: [AnonymousClass] new Function2(...) { ... } # 17| 1: [Constructor] # 17| 5: [BlockStmt] { ... } # 17| 0: [SuperConstructorInvocationStmt] super(...) # 17| 2: [Method] invoke # 17| 3: [TypeAccess] int #-----| 4: (Parameters) # 17| 0: [Parameter] a # 17| 0: [TypeAccess] int # 17| 1: [Parameter] b # 17| 0: [TypeAccess] int # 17| 5: [BlockStmt] { ... } # 17| 0: [ReturnStmt] return ... # 17| 0: [AddExpr] ... + ... # 17| 0: [VarAccess] a # 17| 1: [VarAccess] b # 17| -3: [TypeAccess] Function2 # 17| 0: [TypeAccess] Integer # 17| 1: [TypeAccess] Integer # 17| 2: [TypeAccess] Integer # 20| 5: [Method] fn4 # 20| 3: [TypeAccess] Unit # 20| 5: [BlockStmt] { ... } # 21| 0: [LocalVariableDeclStmt] var ...; # 21| 1: [LocalVariableDeclExpr] fnRef # 21| 0: [MemberRefExpr] ...::... # 21| -4: [AnonymousClass] new Function1(...) { ... } # 21| 1: [Constructor] # 21| 5: [BlockStmt] { ... } # 21| 0: [SuperConstructorInvocationStmt] super(...) # 21| 0: [IntegerLiteral] 1 # 21| 2: [Method] invoke #-----| 4: (Parameters) # 21| 0: [Parameter] a0 # 21| 5: [BlockStmt] { ... } # 21| 0: [ReturnStmt] return ... # 21| 0: [MethodCall] fn3(...) # 21| -1: [VarAccess] a0 # 21| -3: [TypeAccess] Function1 # 21| 0: [TypeAccess] Class1 # 21| 1: [TypeAccess] Unit # 24| 6: [Method] fn5 # 24| 3: [TypeAccess] Unit # 24| 5: [BlockStmt] { ... } # 25| 0: [LocalTypeDeclStmt] class ... # 25| 0: [LocalClass] LocalClass # 25| 1: [Constructor] LocalClass # 25| 5: [BlockStmt] { ... } # 25| 0: [SuperConstructorInvocationStmt] super(...) # 25| 1: [BlockStmt] { ... } # 26| 1: [ExprStmt] ; # 26| 0: [ImplicitCoercionToUnitExpr] # 26| 0: [TypeAccess] Unit # 26| 1: [ClassInstanceExpr] new LocalClass(...) # 26| -3: [TypeAccess] LocalClass # 29| 7: [Method] nullableAnonymous # 29| 3: [TypeAccess] Object # 29| 5: [BlockStmt] { ... } # 35| 0: [ReturnStmt] return ... # 29| 0: [StmtExpr] # 29| 0: [BlockStmt] { ... } # 29| 0: [LocalTypeDeclStmt] class ... # 29| 0: [AnonymousClass,LocalClass] new Object(...) { ... } # 29| 1: [Constructor] # 29| 5: [BlockStmt] { ... } # 29| 0: [SuperConstructorInvocationStmt] super(...) # 29| 1: [BlockStmt] { ... } # 30| 0: [ExprStmt] ; # 30| 0: [KtInitializerAssignExpr] ...=... # 30| 0: [VarAccess] x # 30| 2: [Method] getX # 30| 3: [TypeAccess] int # 30| 5: [BlockStmt] { ... } # 30| 0: [ReturnStmt] return ... # 30| 0: [VarAccess] this.x # 30| -1: [ThisAccess] this # 30| 3: [FieldDeclaration] int x; # 30| -1: [TypeAccess] int # 30| 0: [IntegerLiteral] 1 # 30| 4: [Method] setX # 30| 3: [TypeAccess] Unit #-----| 4: (Parameters) # 30| 0: [Parameter] # 30| 0: [TypeAccess] int # 30| 5: [BlockStmt] { ... } # 30| 0: [ExprStmt] ; # 30| 0: [AssignExpr] ...=... # 30| 0: [VarAccess] this.x # 30| -1: [ThisAccess] this # 30| 1: [VarAccess] # 32| 5: [Method] member # 32| 3: [TypeAccess] Unit # 32| 5: [BlockStmt] { ... } # 33| 0: [LocalVariableDeclStmt] var ...; # 33| 1: [LocalVariableDeclExpr] maybeThis # 33| 0: [WhenExpr] when ... # 33| 0: [WhenBranch] ... -> ... # 33| 0: [ValueEQExpr] ... (value equals) ... # 33| 0: [MethodCall] getX(...) # 33| -1: [ThisAccess] this # 33| 1: [IntegerLiteral] 1 # 33| 1: [ExprStmt] ; # 33| 0: [ThisAccess] this # 33| 1: [WhenBranch] ... -> ... # 33| 0: [BooleanLiteral] true # 33| 1: [ExprStmt] ; # 33| 0: [NullLiteral] null # 29| 1: [ExprStmt] ; # 29| 0: [ClassInstanceExpr] new (...) # 29| -3: [TypeAccess] Object # 38| 2: [Interface] Interface2 # 39| 3: [Class] Class2 # 39| 1: [Constructor] Class2 # 39| 5: [BlockStmt] { ... } # 39| 0: [SuperConstructorInvocationStmt] super(...) # 39| 1: [BlockStmt] { ... } # 40| 0: [ExprStmt] ; # 40| 0: [KtInitializerAssignExpr] ...=... # 40| 0: [VarAccess] i # 40| 2: [FieldDeclaration] Interface2 i; # 40| -1: [TypeAccess] Interface2 # 40| 0: [StmtExpr] # 40| 0: [BlockStmt] { ... } # 40| 0: [LocalTypeDeclStmt] class ... # 40| 0: [AnonymousClass,LocalClass] new Interface2(...) { ... } # 40| 1: [Constructor] # 40| 5: [BlockStmt] { ... } # 40| 0: [SuperConstructorInvocationStmt] super(...) # 40| 1: [BlockStmt] { ... } # 42| 0: [LocalVariableDeclStmt] var ...; # 42| 1: [LocalVariableDeclExpr] answer # 42| 0: [StringLiteral] "42" # 40| 1: [ExprStmt] ; # 40| 0: [ClassInstanceExpr] new (...) # 40| -3: [TypeAccess] Interface2 # 40| 3: [Method] getI # 40| 3: [TypeAccess] Interface2 # 40| 5: [BlockStmt] { ... } # 40| 0: [ReturnStmt] return ... # 40| 0: [VarAccess] this.i # 40| -1: [ThisAccess] this # 40| 4: [Method] setI # 40| 3: [TypeAccess] Unit #-----| 4: (Parameters) # 40| 0: [Parameter] # 40| 0: [TypeAccess] Interface2 # 40| 5: [BlockStmt] { ... } # 40| 0: [ExprStmt] ; # 40| 0: [AssignExpr] ...=... # 40| 0: [VarAccess] this.i # 40| -1: [ThisAccess] this # 40| 1: [VarAccess] superChain.kt: # 0| [CompilationUnit] superChain # 1| 1: [Class,GenericType,ParameterizedType] SuperChain1 #-----| -2: (Generic Parameters) # 1| 0: [TypeVariable] T1 # 1| 1: [TypeVariable] T2 # 1| 1: [Constructor] SuperChain1 # 1| 5: [BlockStmt] { ... } # 1| 0: [SuperConstructorInvocationStmt] super(...) # 1| 1: [BlockStmt] { ... } # 2| 2: [Class,GenericType,ParameterizedType] SuperChain2 #-----| -2: (Generic Parameters) # 2| 0: [TypeVariable] T3 # 2| 1: [TypeVariable] T4 # 2| 1: [Constructor] SuperChain2 # 2| 5: [BlockStmt] { ... } # 2| 0: [SuperConstructorInvocationStmt] super(...) # 2| 1: [BlockStmt] { ... } # 3| 3: [Class,GenericType,ParameterizedType] SuperChain3 #-----| -2: (Generic Parameters) # 3| 0: [TypeVariable] T5 # 3| 1: [TypeVariable] T6 # 3| 1: [Constructor] SuperChain3 # 3| 5: [BlockStmt] { ... } # 3| 0: [SuperConstructorInvocationStmt] super(...) # 3| 1: [BlockStmt] { ... }