a.kt: # 0| [CompilationUnit] a # 1| 1: [Class] A # 0| 1: [Method] # 0| 3: [TypeAccess] int # 0| 5: [BlockStmt] { ... } # 0| 0: [ReturnStmt] return ... # 0| 0: [IntegerLiteral] 42 # 1| 2: [Constructor] A # 1| 5: [BlockStmt] { ... } # 1| 0: [SuperConstructorInvocationStmt] super(...) # 1| 1: [BlockStmt] { ... } # 2| 3: [Method] f1 # 2| 3: [TypeAccess] int # 2| 5: [BlockStmt] { ... } # 2| 0: [ReturnStmt] return ... # 2| 0: [IntegerLiteral] 1 b.kt: # 0| [CompilationUnit] b # 1| 1: [Class] B # 0| 1: [Method] # 0| 3: [TypeAccess] int # 0| 5: [BlockStmt] { ... } # 0| 0: [ReturnStmt] return ... # 0| 0: [UnsafeCoerceExpr] # 0| 0: [TypeAccess] int # 0| 1: [IntegerLiteral] 1 # 1| 2: [Constructor] B # 1| 5: [BlockStmt] { ... } # 1| 0: [SuperConstructorInvocationStmt] super(...) # 1| 1: [BlockStmt] { ... } c.kt: # 0| [CompilationUnit] c # 1| 1: [Class] C # 0| 1: [Method] # 0| 3: [TypeAccess] Unit #-----| 4: (Parameters) # 0| 0: [Parameter] param # 0| 0: [TypeAccess] ProcessBuilder # 0| 5: [BlockStmt] { ... } # 0| 0: [ReturnStmt] return ... # 0| 0: [MethodCall] start(...) # 0| -1: [VarAccess] param # 1| 2: [Constructor] C # 1| 5: [BlockStmt] { ... } # 1| 0: [SuperConstructorInvocationStmt] super(...) # 1| 1: [BlockStmt] { ... } d.kt: # 0| [CompilationUnit] d # 1| 1: [Class] D # 0| 2: [FieldDeclaration] String bar; # 0| -1: [TypeAccess] String # 0| 0: [StringLiteral] "Foobar" # 1| 3: [Constructor] D # 1| 5: [BlockStmt] { ... } # 1| 0: [SuperConstructorInvocationStmt] super(...) # 1| 1: [BlockStmt] { ... } e.kt: # 0| [CompilationUnit] e # 1| 1: [Class] E # 0| 1: [Method] # 0| 3: [TypeAccess] boolean # 0| 5: [BlockStmt] { ... } # 0| 0: [ReturnStmt] return ... # 0| 0: [MethodCall] add(...) # 0| -1: [ClassInstanceExpr] new ArrayList(...) # 0| -3: [TypeAccess] ArrayList # 0| 0: [IntegerLiteral] 1 # 0| 0: [NullLiteral] null # 0| 2: [Method] # 0| 3: [TypeAccess] Object # 0| 5: [BlockStmt] { ... } # 0| 0: [ReturnStmt] return ... # 0| 0: [MethodCall] put(...) # 0| -1: [ClassInstanceExpr] new LinkedHashMap(...) # 0| -3: [TypeAccess] LinkedHashMap # 0| 0: [IntegerLiteral] 1 # 0| 0: [NullLiteral] null # 0| 1: [NullLiteral] null # 1| 3: [Constructor] E # 1| 5: [BlockStmt] { ... } # 1| 0: [SuperConstructorInvocationStmt] super(...) # 1| 1: [BlockStmt] { ... }