reflection.kt: # 0| [CompilationUnit] reflection # 0| 1: [Class] ReflectionKt # 47| 1: [ExtensionMethod] getLastChar # 47| 3: [TypeAccess] char #-----| 4: (Parameters) # 46| 0: [Parameter] # 46| 0: [TypeAccess] String # 47| 5: [BlockStmt] { ... } # 47| 0: [ReturnStmt] return ... # 47| 0: [MethodCall] charAt(...) # 47| -1: [ExtensionReceiverAccess] this # 47| 0: [SubExpr] ... - ... # 47| 0: [MethodCall] length(...) # 47| -1: [ExtensionReceiverAccess] this # 47| 1: [IntegerLiteral] 1 # 49| 2: [Method] fn2 # 49| 3: [TypeAccess] Unit # 49| 5: [BlockStmt] { ... } # 50| 0: [ExprStmt] ; # 50| 0: [MethodCall] println(...) # 50| -1: [TypeAccess] ConsoleKt # 50| 0: [MethodCall] get(...) # 50| -1: [PropertyRefExpr] ...::... # 50| -4: [AnonymousClass] new KProperty1(...) { ... } # 50| 1: [Constructor] # 50| 5: [BlockStmt] { ... } # 50| 0: [SuperConstructorInvocationStmt] super(...) # 50| 2: [Method] get #-----| 4: (Parameters) # 50| 0: [Parameter] a0 # 50| 5: [BlockStmt] { ... } # 50| 0: [ReturnStmt] return ... # 50| 0: [MethodCall] getLastChar(...) # 50| -1: [TypeAccess] ReflectionKt # 50| 0: [VarAccess] a0 # 50| 3: [Method] invoke #-----| 4: (Parameters) # 50| 0: [Parameter] a0 # 50| 5: [BlockStmt] { ... } # 50| 0: [ReturnStmt] return ... # 50| 0: [MethodCall] get(...) # 50| -1: [ThisAccess] this # 50| 0: [VarAccess] a0 # 50| -3: [TypeAccess] KProperty1 # 50| 0: [TypeAccess] String # 50| 1: [TypeAccess] Character # 50| 0: [StringLiteral] "abc" # 51| 1: [ExprStmt] ; # 51| 0: [MethodCall] println(...) # 51| -1: [TypeAccess] ConsoleKt # 51| 0: [MethodCall] get(...) # 51| -1: [PropertyRefExpr] ...::... # 51| -4: [AnonymousClass] new KProperty0(...) { ... } # 51| 1: [Constructor] #-----| 4: (Parameters) # 51| 0: [Parameter] # 51| 5: [BlockStmt] { ... } # 51| 0: [SuperConstructorInvocationStmt] super(...) # 51| 1: [ExprStmt] ; # 51| 0: [AssignExpr] ...=... # 51| 0: [VarAccess] this. # 51| -1: [ThisAccess] this # 51| 1: [VarAccess] # 51| 2: [FieldDeclaration] String ; # 51| -1: [TypeAccess] String # 51| 3: [Method] get # 51| 5: [BlockStmt] { ... } # 51| 0: [ReturnStmt] return ... # 51| 0: [MethodCall] getLastChar(...) # 51| -1: [TypeAccess] ReflectionKt # 51| 0: [VarAccess] this. # 51| -1: [ThisAccess] this # 51| 4: [Method] invoke # 51| 5: [BlockStmt] { ... } # 51| 0: [ReturnStmt] return ... # 51| 0: [MethodCall] get(...) # 51| -1: [ThisAccess] this # 51| -3: [TypeAccess] KProperty0 # 51| 0: [TypeAccess] Character # 51| 0: [StringLiteral] "abcd" # 54| 3: [ExtensionMethod] ext1 #-----| 2: (Generic Parameters) # 54| 0: [TypeVariable] T2 # 54| 3: [TypeAccess] String #-----| 4: (Parameters) # 54| 0: [Parameter] # 54| 0: [TypeAccess] Generic # 54| 0: [TypeAccess] T2 # 54| 5: [BlockStmt] { ... } # 54| 0: [ReturnStmt] return ... # 54| 0: [MethodCall] toString(...) # 54| -1: [ExtensionReceiverAccess] this # 56| 4: [ExtensionMethod] ext2 # 56| 3: [TypeAccess] String #-----| 4: (Parameters) # 56| 0: [Parameter] # 56| 0: [TypeAccess] Generic # 56| 0: [TypeAccess] Integer # 56| 5: [BlockStmt] { ... } # 56| 0: [ReturnStmt] return ... # 56| 0: [MethodCall] toString(...) # 56| -1: [ExtensionReceiverAccess] this # 94| 5: [Method] fn #-----| 2: (Generic Parameters) # 94| 0: [TypeVariable] T # 94| 3: [TypeAccess] Unit #-----| 4: (Parameters) # 94| 0: [Parameter] value # 94| 0: [TypeAccess] T # 94| 5: [BlockStmt] { ... } # 96| 6: [Method] test # 96| 3: [TypeAccess] Unit # 96| 5: [BlockStmt] { ... } # 97| 0: [ExprStmt] ; # 97| 0: [MethodCall] fn11(...) # 97| -3: [TypeAccess] Class2 # 97| 0: [TypeAccess] String # 97| -2: [TypeAccess] String # 97| -1: [TypeAccess] ReflectionKt # 97| 0: [StringLiteral] "" # 97| 1: [MemberRefExpr] ...::... # 97| -4: [AnonymousClass] new Function1>(...) { ... } # 97| 1: [Constructor] # 97| 5: [BlockStmt] { ... } # 97| 0: [SuperConstructorInvocationStmt] super(...) # 97| 0: [IntegerLiteral] 1 # 97| 2: [Method] invoke #-----| 4: (Parameters) # 97| 0: [Parameter] a0 # 97| 5: [BlockStmt] { ... } # 97| 0: [ReturnStmt] return ... # 97| 0: [ClassInstanceExpr] new Class2(...) # 97| -3: [TypeAccess] Class2 # 97| 0: [TypeAccess] String # 97| 0: [VarAccess] a0 # 97| -3: [TypeAccess] Function1> # 97| 0: [TypeAccess] String # 97| 1: [TypeAccess] Class2 # 97| 0: [TypeAccess] String # 98| 1: [ExprStmt] ; # 98| 0: [MethodCall] fn11(...) # 98| -3: [TypeAccess] Unit # 98| -2: [TypeAccess] String # 98| -1: [TypeAccess] ReflectionKt # 98| 0: [StringLiteral] "" # 98| 1: [MemberRefExpr] ...::... # 98| -4: [AnonymousClass] new Function1(...) { ... } # 98| 1: [Constructor] # 98| 5: [BlockStmt] { ... } # 98| 0: [SuperConstructorInvocationStmt] super(...) # 98| 0: [IntegerLiteral] 1 # 98| 2: [Method] invoke #-----| 4: (Parameters) # 98| 0: [Parameter] a0 # 98| 5: [BlockStmt] { ... } # 98| 0: [ReturnStmt] return ... # 98| 0: [MethodCall] fn(...) # 98| -2: [TypeAccess] String # 98| -1: [TypeAccess] ReflectionKt # 98| 0: [VarAccess] a0 # 98| -3: [TypeAccess] Function1 # 98| 0: [TypeAccess] String # 98| 1: [TypeAccess] Unit # 99| 2: [ExprStmt] ; # 99| 0: [MethodCall] fn12(...) # 99| -3: [TypeAccess] Inner # 99| 0: [TypeAccess] String # 99| 1: [TypeAccess] Integer # 99| -2: [TypeAccess] String # 99| -1: [TypeAccess] ReflectionKt # 99| 0: [StringLiteral] "" # 99| 1: [MemberRefExpr] ...::... # 99| -4: [AnonymousClass] new Function1>(...) { ... } # 99| 1: [Constructor] #-----| 4: (Parameters) # 99| 0: [Parameter] # 99| 5: [BlockStmt] { ... } # 99| 0: [SuperConstructorInvocationStmt] super(...) # 99| 0: [IntegerLiteral] 1 # 99| 1: [ExprStmt] ; # 99| 0: [AssignExpr] ...=... # 99| 0: [VarAccess] this. # 99| -1: [ThisAccess] this # 99| 1: [VarAccess] # 99| 2: [FieldDeclaration] Class2 ; # 99| -1: [TypeAccess] Class2 # 99| 0: [TypeAccess] Integer # 99| 3: [Method] invoke #-----| 4: (Parameters) # 99| 0: [Parameter] a0 # 99| 5: [BlockStmt] { ... } # 99| 0: [ReturnStmt] return ... # 99| 0: [ClassInstanceExpr] new Inner(...) # 99| -3: [TypeAccess] Inner # 99| 0: [TypeAccess] String # 99| -2: [VarAccess] this. # 99| -1: [ThisAccess] this # 99| 0: [VarAccess] a0 # 99| -3: [TypeAccess] Function1> # 99| 0: [TypeAccess] String # 99| 1: [TypeAccess] Inner # 99| 0: [TypeAccess] String # 99| 0: [ClassInstanceExpr] new Class2(...) # 99| -3: [TypeAccess] Class2 # 99| 0: [TypeAccess] Integer # 99| 0: [IntegerLiteral] 5 # 102| 7: [Method] fn11 #-----| 2: (Generic Parameters) # 102| 0: [TypeVariable] T # 102| 1: [TypeVariable] R # 102| 3: [TypeAccess] Unit #-----| 4: (Parameters) # 102| 0: [Parameter] l # 102| 0: [TypeAccess] T # 102| 1: [Parameter] transform # 102| 0: [TypeAccess] Function1 # 102| 0: [WildcardTypeAccess] ? ... # 102| 1: [TypeAccess] T # 102| 1: [WildcardTypeAccess] ? ... # 102| 0: [TypeAccess] R # 102| 5: [BlockStmt] { ... } # 103| 8: [Method] fn12 #-----| 2: (Generic Parameters) # 103| 0: [TypeVariable] T1 # 103| 1: [TypeVariable] R # 103| 3: [TypeAccess] Unit #-----| 4: (Parameters) # 103| 0: [Parameter] l # 103| 0: [TypeAccess] T1 # 103| 1: [Parameter] l2 # 103| 0: [TypeAccess] Function1 # 103| 0: [WildcardTypeAccess] ? ... # 103| 1: [TypeAccess] T1 # 103| 1: [WildcardTypeAccess] ? ... # 103| 0: [TypeAccess] R # 103| 5: [BlockStmt] { ... } # 121| 9: [Method] fn1 # 121| 3: [TypeAccess] int # 121| 5: [BlockStmt] { ... } # 121| 0: [ReturnStmt] return ... # 121| 0: [IntegerLiteral] 5 # 123| 10: [Method] fn2 # 123| 3: [TypeAccess] Unit #-----| 4: (Parameters) # 123| 0: [Parameter] f # 123| 0: [TypeAccess] Function0 # 123| 0: [TypeAccess] Unit # 123| 5: [BlockStmt] { ... } # 123| 0: [ReturnStmt] return ... # 123| 0: [MethodCall] invoke(...) # 123| -1: [VarAccess] f # 125| 11: [Method] adapted # 125| 3: [TypeAccess] Unit # 125| 5: [BlockStmt] { ... } # 126| 0: [ExprStmt] ; # 126| 0: [MethodCall] fn2(...) # 126| -1: [TypeAccess] ReflectionKt # 126| 0: [StmtExpr] # 126| 0: [BlockStmt] { ... } # 126| 0: [LocalTypeDeclStmt] class ... # 126| 0: [LocalClass] # 126| 1: [Constructor] # 126| 5: [BlockStmt] { ... } # 126| 0: [SuperConstructorInvocationStmt] super(...) # 126| 2: [Method] fn1 # 126| 3: [TypeAccess] Unit # 126| 5: [BlockStmt] { ... } # 126| 0: [ExprStmt] ; # 126| 0: [ImplicitCoercionToUnitExpr] # 126| 0: [TypeAccess] Unit # 126| 1: [MethodCall] fn1(...) # 126| -1: [TypeAccess] ReflectionKt # 126| 1: [ExprStmt] ; # 126| 0: [MemberRefExpr] ...::... # 126| -4: [AnonymousClass] new Function0(...) { ... } # 126| 1: [Constructor] # 126| 5: [BlockStmt] { ... } # 126| 0: [SuperConstructorInvocationStmt] super(...) # 126| 0: [IntegerLiteral] 0 # 126| 2: [Method] invoke # 126| 5: [BlockStmt] { ... } # 126| 0: [ReturnStmt] return ... # 126| 0: [MethodCall] fn1(...) # 126| -1: [ClassInstanceExpr] new (...) # 126| -3: [TypeAccess] Object # 126| -3: [TypeAccess] Function0 # 126| 0: [TypeAccess] Unit # 129| 12: [Method] expectsOneParam # 129| 3: [TypeAccess] int #-----| 4: (Parameters) # 129| 0: [Parameter] f # 129| 0: [TypeAccess] Function1 # 129| 0: [WildcardTypeAccess] ? ... # 129| 1: [TypeAccess] Integer # 129| 1: [TypeAccess] Integer # 129| 5: [BlockStmt] { ... } # 129| 0: [ReturnStmt] return ... # 129| 0: [MethodCall] invoke(...) # 129| -1: [VarAccess] f # 129| 0: [IntegerLiteral] 0 # 131| 13: [Method] takesOptionalParam # 131| 3: [TypeAccess] int #-----| 4: (Parameters) # 131| 0: [Parameter] x # 131| 0: [TypeAccess] int # 131| 1: [Parameter] y # 131| 0: [TypeAccess] int # 131| 5: [BlockStmt] { ... } # 131| 0: [ReturnStmt] return ... # 131| 0: [AddExpr] ... + ... # 131| 0: [VarAccess] x # 131| 1: [VarAccess] y # 131| 14: [Method] takesOptionalParam$default # 131| 3: [TypeAccess] int #-----| 4: (Parameters) # 131| 0: [Parameter] p0 # 131| 0: [TypeAccess] int # 131| 1: [Parameter] p1 # 131| 0: [TypeAccess] int # 131| 2: [Parameter] p2 # 131| 0: [TypeAccess] int # 131| 3: [Parameter] p3 # 131| 0: [TypeAccess] Object # 131| 5: [BlockStmt] { ... } # 131| 0: [IfStmt] if (...) # 131| 0: [EQExpr] ... == ... # 131| 0: [AndBitwiseExpr] ... & ... # 131| 0: [IntegerLiteral] 2 # 131| 1: [VarAccess] p2 # 131| 1: [IntegerLiteral] 0 # 131| 1: [ExprStmt] ; # 131| 0: [AssignExpr] ...=... # 131| 0: [VarAccess] p1 # 131| 1: [IntegerLiteral] 0 # 131| 1: [ReturnStmt] return ... # 131| 0: [MethodCall] takesOptionalParam(...) # 131| -1: [TypeAccess] ReflectionKt # 131| 0: [VarAccess] p0 # 131| 1: [VarAccess] p1 # 133| 15: [Method] adaptedParams # 133| 3: [TypeAccess] Unit # 133| 5: [BlockStmt] { ... } # 134| 0: [ExprStmt] ; # 134| 0: [ImplicitCoercionToUnitExpr] # 134| 0: [TypeAccess] Unit # 134| 1: [MethodCall] expectsOneParam(...) # 134| -1: [TypeAccess] ReflectionKt # 134| 0: [StmtExpr] # 134| 0: [BlockStmt] { ... } # 134| 0: [LocalTypeDeclStmt] class ... # 134| 0: [LocalClass] # 134| 1: [Constructor] # 134| 5: [BlockStmt] { ... } # 134| 0: [SuperConstructorInvocationStmt] super(...) # 134| 2: [Method] takesOptionalParam # 134| 3: [TypeAccess] int #-----| 4: (Parameters) # 134| 0: [Parameter] p0 # 134| 0: [TypeAccess] int # 134| 5: [BlockStmt] { ... } # 134| 0: [ReturnStmt] return ... # 134| 0: [MethodCall] takesOptionalParam$default(...) # 134| -1: [TypeAccess] ReflectionKt # 134| 0: [VarAccess] p0 # 1| 1: [IntegerLiteral] 0 # 1| 2: [IntegerLiteral] 1 # 1| 3: [NullLiteral] null # 134| 1: [ExprStmt] ; # 134| 0: [MemberRefExpr] ...::... # 134| -4: [AnonymousClass] new Function1(...) { ... } # 134| 1: [Constructor] # 134| 5: [BlockStmt] { ... } # 134| 0: [SuperConstructorInvocationStmt] super(...) # 134| 0: [IntegerLiteral] 1 # 134| 2: [Method] invoke #-----| 4: (Parameters) # 134| 0: [Parameter] a0 # 134| 5: [BlockStmt] { ... } # 134| 0: [ReturnStmt] return ... # 134| 0: [MethodCall] takesOptionalParam(...) # 134| -1: [ClassInstanceExpr] new (...) # 134| -3: [TypeAccess] Object # 134| 0: [VarAccess] a0 # 134| -3: [TypeAccess] Function1 # 134| 0: [TypeAccess] Integer # 134| 1: [TypeAccess] Integer # 137| 16: [Method] expectsOneParamAndReceiver # 137| 3: [TypeAccess] Unit #-----| 4: (Parameters) # 137| 0: [Parameter] f # 137| 0: [TypeAccess] Function2 # 137| 0: [WildcardTypeAccess] ? ... # 137| 1: [TypeAccess] MemberOptionalsTest # 137| 1: [WildcardTypeAccess] ? ... # 137| 1: [TypeAccess] Integer # 137| 2: [TypeAccess] Integer # 137| 5: [BlockStmt] { ... } # 143| 17: [Method] memberAdaptedParams # 143| 3: [TypeAccess] Unit #-----| 4: (Parameters) # 143| 0: [Parameter] m # 143| 0: [TypeAccess] MemberOptionalsTest # 143| 5: [BlockStmt] { ... } # 144| 0: [ExprStmt] ; # 144| 0: [ImplicitCoercionToUnitExpr] # 144| 0: [TypeAccess] Unit # 144| 1: [MethodCall] expectsOneParam(...) # 144| -1: [TypeAccess] ReflectionKt # 144| 0: [StmtExpr] # 144| 0: [BlockStmt] { ... } # 144| 0: [LocalTypeDeclStmt] class ... # 144| 0: [LocalClass] # 144| 1: [Constructor] # 144| 5: [BlockStmt] { ... } # 144| 0: [SuperConstructorInvocationStmt] super(...) # 144| 2: [ExtensionMethod] takesOptionalParam # 144| 3: [TypeAccess] int #-----| 4: (Parameters) # 144| 0: [Parameter] receiver # 144| 0: [TypeAccess] MemberOptionalsTest # 144| 1: [Parameter] p0 # 144| 0: [TypeAccess] int # 144| 5: [BlockStmt] { ... } # 144| 0: [ReturnStmt] return ... # 144| 0: [MethodCall] takesOptionalParam$default(...) # 144| -1: [TypeAccess] MemberOptionalsTest # 144| 0: [ExtensionReceiverAccess] this # 144| 1: [VarAccess] p0 # 1| 2: [IntegerLiteral] 0 # 1| 3: [IntegerLiteral] 1 # 1| 4: [NullLiteral] null # 144| 1: [ExprStmt] ; # 144| 0: [MemberRefExpr] ...::... # 144| -4: [AnonymousClass] new Function1(...) { ... } # 144| 1: [Constructor] #-----| 4: (Parameters) # 144| 0: [Parameter] # 144| 5: [BlockStmt] { ... } # 144| 0: [SuperConstructorInvocationStmt] super(...) # 144| 0: [IntegerLiteral] 1 # 144| 1: [ExprStmt] ; # 144| 0: [AssignExpr] ...=... # 144| 0: [VarAccess] this. # 144| -1: [ThisAccess] this # 144| 1: [VarAccess] # 144| 2: [FieldDeclaration] MemberOptionalsTest ; # 144| -1: [TypeAccess] MemberOptionalsTest # 144| 3: [Method] invoke #-----| 4: (Parameters) # 144| 0: [Parameter] a0 # 144| 5: [BlockStmt] { ... } # 144| 0: [ReturnStmt] return ... # 144| 0: [MethodCall] takesOptionalParam(...) # 144| -1: [ClassInstanceExpr] new (...) # 144| -3: [TypeAccess] Object # 144| 0: [VarAccess] this. # 144| -1: [ThisAccess] this # 144| 1: [VarAccess] a0 # 144| -3: [TypeAccess] Function1 # 144| 0: [TypeAccess] Integer # 144| 1: [TypeAccess] Integer # 144| 0: [VarAccess] m # 145| 1: [ExprStmt] ; # 145| 0: [MethodCall] expectsOneParamAndReceiver(...) # 145| -1: [TypeAccess] ReflectionKt # 145| 0: [StmtExpr] # 145| 0: [BlockStmt] { ... } # 145| 0: [LocalTypeDeclStmt] class ... # 145| 0: [LocalClass] # 145| 1: [Constructor] # 145| 5: [BlockStmt] { ... } # 145| 0: [SuperConstructorInvocationStmt] super(...) # 145| 2: [Method] takesOptionalParam # 145| 3: [TypeAccess] int #-----| 4: (Parameters) # 145| 0: [Parameter] p0 # 145| 0: [TypeAccess] MemberOptionalsTest # 145| 1: [Parameter] p1 # 145| 0: [TypeAccess] int # 145| 5: [BlockStmt] { ... } # 145| 0: [ReturnStmt] return ... # 145| 0: [MethodCall] takesOptionalParam$default(...) # 145| -1: [TypeAccess] MemberOptionalsTest # 145| 0: [VarAccess] p0 # 145| 1: [VarAccess] p1 # 1| 2: [IntegerLiteral] 0 # 1| 3: [IntegerLiteral] 1 # 1| 4: [NullLiteral] null # 145| 1: [ExprStmt] ; # 145| 0: [MemberRefExpr] ...::... # 145| -4: [AnonymousClass] new Function2(...) { ... } # 145| 1: [Constructor] # 145| 5: [BlockStmt] { ... } # 145| 0: [SuperConstructorInvocationStmt] super(...) # 145| 0: [IntegerLiteral] 2 # 145| 2: [Method] invoke #-----| 4: (Parameters) # 145| 0: [Parameter] a0 # 145| 1: [Parameter] a1 # 145| 5: [BlockStmt] { ... } # 145| 0: [ReturnStmt] return ... # 145| 0: [MethodCall] takesOptionalParam(...) # 145| -1: [ClassInstanceExpr] new (...) # 145| -3: [TypeAccess] Object # 145| 0: [VarAccess] a0 # 145| 1: [VarAccess] a1 # 145| -3: [TypeAccess] Function2 # 145| 0: [TypeAccess] MemberOptionalsTest # 145| 1: [TypeAccess] Integer # 145| 2: [TypeAccess] Integer # 148| 18: [Method] expectsOneParamAndExtension # 148| 3: [TypeAccess] Unit #-----| 4: (Parameters) # 148| 0: [Parameter] f # 148| 0: [TypeAccess] Function2 # 148| 0: [WildcardTypeAccess] ? ... # 148| 1: [TypeAccess] String # 148| 1: [WildcardTypeAccess] ? ... # 148| 1: [TypeAccess] Integer # 148| 2: [TypeAccess] Integer # 148| 5: [BlockStmt] { ... } # 150| 19: [ExtensionMethod] extTakesOptionalParam # 150| 3: [TypeAccess] int #-----| 4: (Parameters) # 150| 0: [Parameter] # 150| 0: [TypeAccess] String # 150| 1: [Parameter] x # 150| 0: [TypeAccess] int # 150| 2: [Parameter] y # 150| 0: [TypeAccess] int # 150| 5: [BlockStmt] { ... } # 150| 0: [ReturnStmt] return ... # 150| 0: [AddExpr] ... + ... # 150| 0: [VarAccess] x # 150| 1: [VarAccess] y # 150| 20: [ExtensionMethod] extTakesOptionalParam$default # 150| 3: [TypeAccess] int #-----| 4: (Parameters) # 150| 0: [Parameter] p0 # 150| 0: [TypeAccess] String # 150| 1: [Parameter] p1 # 150| 0: [TypeAccess] int # 150| 2: [Parameter] p2 # 150| 0: [TypeAccess] int # 150| 3: [Parameter] p3 # 150| 0: [TypeAccess] int # 150| 4: [Parameter] p4 # 150| 0: [TypeAccess] Object # 150| 5: [BlockStmt] { ... } # 150| 0: [IfStmt] if (...) # 150| 0: [EQExpr] ... == ... # 150| 0: [AndBitwiseExpr] ... & ... # 150| 0: [IntegerLiteral] 2 # 150| 1: [VarAccess] p3 # 150| 1: [IntegerLiteral] 0 # 150| 1: [ExprStmt] ; # 150| 0: [AssignExpr] ...=... # 150| 0: [VarAccess] p2 # 150| 1: [IntegerLiteral] 0 # 150| 1: [ReturnStmt] return ... # 150| 0: [MethodCall] extTakesOptionalParam(...) # 150| -1: [TypeAccess] ReflectionKt # 150| 0: [ExtensionReceiverAccess] this # 150| 1: [VarAccess] p1 # 150| 2: [VarAccess] p2 # 152| 21: [Method] extensionAdaptedParams # 152| 3: [TypeAccess] Unit #-----| 4: (Parameters) # 152| 0: [Parameter] s # 152| 0: [TypeAccess] String # 152| 5: [BlockStmt] { ... } # 153| 0: [ExprStmt] ; # 153| 0: [ImplicitCoercionToUnitExpr] # 153| 0: [TypeAccess] Unit # 153| 1: [MethodCall] expectsOneParam(...) # 153| -1: [TypeAccess] ReflectionKt # 153| 0: [StmtExpr] # 153| 0: [BlockStmt] { ... } # 153| 0: [LocalTypeDeclStmt] class ... # 153| 0: [LocalClass] # 153| 1: [Constructor] # 153| 5: [BlockStmt] { ... } # 153| 0: [SuperConstructorInvocationStmt] super(...) # 153| 2: [ExtensionMethod] extTakesOptionalParam # 153| 3: [TypeAccess] int #-----| 4: (Parameters) # 153| 0: [Parameter] receiver # 153| 0: [TypeAccess] String # 153| 1: [Parameter] p0 # 153| 0: [TypeAccess] int # 153| 5: [BlockStmt] { ... } # 153| 0: [ReturnStmt] return ... # 153| 0: [MethodCall] extTakesOptionalParam$default(...) # 153| -1: [TypeAccess] ReflectionKt # 153| 0: [ExtensionReceiverAccess] this # 153| 1: [VarAccess] p0 # 1| 2: [IntegerLiteral] 0 # 1| 3: [IntegerLiteral] 1 # 1| 4: [NullLiteral] null # 153| 1: [ExprStmt] ; # 153| 0: [MemberRefExpr] ...::... # 153| -4: [AnonymousClass] new Function1(...) { ... } # 153| 1: [Constructor] #-----| 4: (Parameters) # 153| 0: [Parameter] # 153| 5: [BlockStmt] { ... } # 153| 0: [SuperConstructorInvocationStmt] super(...) # 153| 0: [IntegerLiteral] 1 # 153| 1: [ExprStmt] ; # 153| 0: [AssignExpr] ...=... # 153| 0: [VarAccess] this. # 153| -1: [ThisAccess] this # 153| 1: [VarAccess] # 153| 2: [FieldDeclaration] String ; # 153| -1: [TypeAccess] String # 153| 3: [Method] invoke #-----| 4: (Parameters) # 153| 0: [Parameter] a0 # 153| 5: [BlockStmt] { ... } # 153| 0: [ReturnStmt] return ... # 153| 0: [MethodCall] extTakesOptionalParam(...) # 153| -1: [ClassInstanceExpr] new (...) # 153| -3: [TypeAccess] Object # 153| 0: [VarAccess] this. # 153| -1: [ThisAccess] this # 153| 1: [VarAccess] a0 # 153| -3: [TypeAccess] Function1 # 153| 0: [TypeAccess] Integer # 153| 1: [TypeAccess] Integer # 153| 0: [VarAccess] s # 154| 1: [ExprStmt] ; # 154| 0: [MethodCall] expectsOneParamAndExtension(...) # 154| -1: [TypeAccess] ReflectionKt # 154| 0: [StmtExpr] # 154| 0: [BlockStmt] { ... } # 154| 0: [LocalTypeDeclStmt] class ... # 154| 0: [LocalClass] # 154| 1: [Constructor] # 154| 5: [BlockStmt] { ... } # 154| 0: [SuperConstructorInvocationStmt] super(...) # 154| 2: [Method] extTakesOptionalParam # 154| 3: [TypeAccess] int #-----| 4: (Parameters) # 154| 0: [Parameter] p0 # 154| 0: [TypeAccess] String # 154| 1: [Parameter] p1 # 154| 0: [TypeAccess] int # 154| 5: [BlockStmt] { ... } # 154| 0: [ReturnStmt] return ... # 154| 0: [MethodCall] extTakesOptionalParam$default(...) # 154| -1: [TypeAccess] ReflectionKt # 154| 0: [VarAccess] p0 # 154| 1: [VarAccess] p1 # 1| 2: [IntegerLiteral] 0 # 1| 3: [IntegerLiteral] 1 # 1| 4: [NullLiteral] null # 154| 1: [ExprStmt] ; # 154| 0: [MemberRefExpr] ...::... # 154| -4: [AnonymousClass] new Function2(...) { ... } # 154| 1: [Constructor] # 154| 5: [BlockStmt] { ... } # 154| 0: [SuperConstructorInvocationStmt] super(...) # 154| 0: [IntegerLiteral] 2 # 154| 2: [Method] invoke #-----| 4: (Parameters) # 154| 0: [Parameter] a0 # 154| 1: [Parameter] a1 # 154| 5: [BlockStmt] { ... } # 154| 0: [ReturnStmt] return ... # 154| 0: [MethodCall] extTakesOptionalParam(...) # 154| -1: [ClassInstanceExpr] new (...) # 154| -3: [TypeAccess] Object # 154| 0: [VarAccess] a0 # 154| 1: [VarAccess] a1 # 154| -3: [TypeAccess] Function2 # 154| 0: [TypeAccess] String # 154| 1: [TypeAccess] Integer # 154| 2: [TypeAccess] Integer # 159| 22: [Method] expectsOneParamCons # 159| 3: [TypeAccess] ConstructorOptional #-----| 4: (Parameters) # 159| 0: [Parameter] f # 159| 0: [TypeAccess] Function1 # 159| 0: [WildcardTypeAccess] ? ... # 159| 1: [TypeAccess] Integer # 159| 1: [TypeAccess] ConstructorOptional # 159| 5: [BlockStmt] { ... } # 159| 0: [ReturnStmt] return ... # 159| 0: [MethodCall] invoke(...) # 159| -1: [VarAccess] f # 159| 0: [IntegerLiteral] 0 # 161| 23: [Method] constructorAdaptedParams # 161| 3: [TypeAccess] Unit # 161| 5: [BlockStmt] { ... } # 162| 0: [ExprStmt] ; # 162| 0: [ImplicitCoercionToUnitExpr] # 162| 0: [TypeAccess] Unit # 162| 1: [MethodCall] expectsOneParamCons(...) # 162| -1: [TypeAccess] ReflectionKt # 162| 0: [StmtExpr] # 162| 0: [BlockStmt] { ... } # 162| 0: [LocalTypeDeclStmt] class ... # 162| 0: [LocalClass] # 162| 1: [Constructor] # 162| 5: [BlockStmt] { ... } # 162| 0: [SuperConstructorInvocationStmt] super(...) # 162| 2: [Method] # 162| 3: [TypeAccess] ConstructorOptional #-----| 4: (Parameters) # 162| 0: [Parameter] p0 # 162| 0: [TypeAccess] int # 162| 5: [BlockStmt] { ... } # 162| 0: [ReturnStmt] return ... # 162| 0: [ClassInstanceExpr] new ConstructorOptional(...) # 162| -3: [TypeAccess] ConstructorOptional # 162| 0: [VarAccess] p0 # 1| 1: [IntegerLiteral] 0 # 1| 2: [IntegerLiteral] 1 # 1| 3: [NullLiteral] null # 162| 1: [ExprStmt] ; # 162| 0: [MemberRefExpr] ...::... # 162| -4: [AnonymousClass] new Function1(...) { ... } # 162| 1: [Constructor] # 162| 5: [BlockStmt] { ... } # 162| 0: [SuperConstructorInvocationStmt] super(...) # 162| 0: [IntegerLiteral] 1 # 162| 2: [Method] invoke #-----| 4: (Parameters) # 162| 0: [Parameter] a0 # 162| 5: [BlockStmt] { ... } # 162| 0: [ReturnStmt] return ... # 162| 0: [MethodCall] (...) # 162| -1: [ClassInstanceExpr] new (...) # 162| -3: [TypeAccess] Object # 162| 0: [VarAccess] a0 # 162| -3: [TypeAccess] Function1 # 162| 0: [TypeAccess] Integer # 162| 1: [TypeAccess] ConstructorOptional # 5| 2: [Class] Reflection # 5| 1: [Constructor] Reflection # 5| 5: [BlockStmt] { ... } # 5| 0: [SuperConstructorInvocationStmt] super(...) # 5| 1: [BlockStmt] { ... } # 6| 2: [Method] fn # 6| 3: [TypeAccess] Unit # 6| 5: [BlockStmt] { ... } # 7| 0: [LocalVariableDeclStmt] var ...; # 7| 1: [LocalVariableDeclExpr] ref # 7| 0: [MemberRefExpr] ...::... # 7| -4: [AnonymousClass] new Function2(...) { ... } # 7| 1: [Constructor] # 7| 5: [BlockStmt] { ... } # 7| 0: [SuperConstructorInvocationStmt] super(...) # 7| 0: [IntegerLiteral] 2 # 7| 2: [Method] invoke #-----| 4: (Parameters) # 7| 0: [Parameter] a0 # 7| 1: [Parameter] a1 # 7| 5: [BlockStmt] { ... } # 7| 0: [ReturnStmt] return ... # 7| 0: [MethodCall] m(...) # 7| -1: [VarAccess] a0 # 7| 0: [VarAccess] a1 # 7| -3: [TypeAccess] Function2 # 7| 0: [TypeAccess] Ccc # 7| 1: [TypeAccess] Integer # 7| 2: [TypeAccess] Double # 8| 1: [ExprStmt] ; # 8| 0: [MethodCall] println(...) # 8| -1: [TypeAccess] ConsoleKt # 8| 0: [MethodCall] getName(...) # 8| -1: [VarAccess] ref # 10| 2: [LocalVariableDeclStmt] var ...; # 10| 1: [LocalVariableDeclExpr] x0 # 10| 0: [PropertyRefExpr] ...::... # 10| -4: [AnonymousClass] new KProperty1(...) { ... } # 10| 1: [Constructor] # 10| 5: [BlockStmt] { ... } # 10| 0: [SuperConstructorInvocationStmt] super(...) # 10| 2: [Method] get #-----| 4: (Parameters) # 10| 0: [Parameter] a0 # 10| 5: [BlockStmt] { ... } # 10| 0: [ReturnStmt] return ... # 10| 0: [MethodCall] getP0(...) # 10| -1: [VarAccess] a0 # 10| 3: [Method] invoke #-----| 4: (Parameters) # 10| 0: [Parameter] a0 # 10| 5: [BlockStmt] { ... } # 10| 0: [ReturnStmt] return ... # 10| 0: [MethodCall] get(...) # 10| -1: [ThisAccess] this # 10| 0: [VarAccess] a0 # 10| -3: [TypeAccess] KProperty1 # 10| 0: [TypeAccess] C # 10| 1: [TypeAccess] Integer # 11| 3: [LocalVariableDeclStmt] var ...; # 11| 1: [LocalVariableDeclExpr] x1 # 11| 0: [MethodCall] get(...) # 11| -1: [VarAccess] x0 # 11| 0: [ClassInstanceExpr] new C(...) # 11| -3: [TypeAccess] C # 12| 4: [LocalVariableDeclStmt] var ...; # 12| 1: [LocalVariableDeclExpr] x2 # 12| 0: [MethodCall] getName(...) # 12| -1: [VarAccess] x0 # 13| 5: [LocalVariableDeclStmt] var ...; # 13| 1: [LocalVariableDeclExpr] x3 # 13| 0: [MethodCall] getGetter(...) # 13| -1: [VarAccess] x0 # 14| 6: [LocalVariableDeclStmt] var ...; # 14| 1: [LocalVariableDeclExpr] x4 # 14| 0: [MemberRefExpr] ...::... # 14| -4: [AnonymousClass] new Function1(...) { ... } # 14| 1: [Constructor] #-----| 4: (Parameters) # 14| 0: [Parameter] # 14| 5: [BlockStmt] { ... } # 14| 0: [SuperConstructorInvocationStmt] super(...) # 14| 0: [IntegerLiteral] 1 # 14| 1: [ExprStmt] ; # 14| 0: [AssignExpr] ...=... # 14| 0: [VarAccess] this. # 14| -1: [ThisAccess] this # 14| 1: [VarAccess] # 14| 2: [FieldDeclaration] KProperty1 ; # 14| -1: [TypeAccess] KProperty1 # 14| 0: [TypeAccess] C # 14| 1: [TypeAccess] Integer # 14| 3: [Method] invoke #-----| 4: (Parameters) # 14| 0: [Parameter] a0 # 14| 5: [BlockStmt] { ... } # 14| 0: [ReturnStmt] return ... # 14| 0: [MethodCall] get(...) # 14| -1: [VarAccess] this. # 14| -1: [ThisAccess] this # 14| 0: [VarAccess] a0 # 14| -3: [TypeAccess] Function1 # 14| 0: [TypeAccess] C # 14| 1: [TypeAccess] Integer # 14| 0: [VarAccess] x0 # 15| 7: [LocalVariableDeclStmt] var ...; # 15| 1: [LocalVariableDeclExpr] x5 # 15| 0: [PropertyRefExpr] ...::... # 15| -4: [AnonymousClass] new KProperty0(...) { ... } # 15| 1: [Constructor] #-----| 4: (Parameters) # 15| 0: [Parameter] # 15| 5: [BlockStmt] { ... } # 15| 0: [SuperConstructorInvocationStmt] super(...) # 15| 1: [ExprStmt] ; # 15| 0: [AssignExpr] ...=... # 15| 0: [VarAccess] this. # 15| -1: [ThisAccess] this # 15| 1: [VarAccess] # 15| 2: [FieldDeclaration] C ; # 15| -1: [TypeAccess] C # 15| 3: [Method] get # 15| 5: [BlockStmt] { ... } # 15| 0: [ReturnStmt] return ... # 15| 0: [MethodCall] getP0(...) # 15| -1: [VarAccess] this. # 15| -1: [ThisAccess] this # 15| 4: [Method] invoke # 15| 5: [BlockStmt] { ... } # 15| 0: [ReturnStmt] return ... # 15| 0: [MethodCall] get(...) # 15| -1: [ThisAccess] this # 15| -3: [TypeAccess] KProperty0 # 15| 0: [TypeAccess] Integer # 15| 0: [ClassInstanceExpr] new C(...) # 15| -3: [TypeAccess] C # 17| 8: [LocalVariableDeclStmt] var ...; # 17| 1: [LocalVariableDeclExpr] y0 # 17| 0: [PropertyRefExpr] ...::... # 17| -4: [AnonymousClass] new KMutableProperty1(...) { ... } # 17| 1: [Constructor] # 17| 5: [BlockStmt] { ... } # 17| 0: [SuperConstructorInvocationStmt] super(...) # 17| 2: [Method] get #-----| 4: (Parameters) # 17| 0: [Parameter] a0 # 17| 5: [BlockStmt] { ... } # 17| 0: [ReturnStmt] return ... # 17| 0: [MethodCall] getP1(...) # 17| -1: [VarAccess] a0 # 17| 3: [Method] invoke #-----| 4: (Parameters) # 17| 0: [Parameter] a0 # 17| 5: [BlockStmt] { ... } # 17| 0: [ReturnStmt] return ... # 17| 0: [MethodCall] get(...) # 17| -1: [ThisAccess] this # 17| 0: [VarAccess] a0 # 17| 4: [Method] set #-----| 4: (Parameters) # 17| 0: [Parameter] a0 # 17| 1: [Parameter] a1 # 17| 5: [BlockStmt] { ... } # 17| 0: [ReturnStmt] return ... # 17| 0: [MethodCall] setP1(...) # 17| -1: [VarAccess] a0 # 17| 0: [VarAccess] a1 # 17| -3: [TypeAccess] KMutableProperty1 # 17| 0: [TypeAccess] C # 17| 1: [TypeAccess] Integer # 18| 9: [LocalVariableDeclStmt] var ...; # 18| 1: [LocalVariableDeclExpr] y1 # 18| 0: [MethodCall] set(...) # 18| -1: [VarAccess] y0 # 18| 0: [ClassInstanceExpr] new C(...) # 18| -3: [TypeAccess] C # 18| 1: [IntegerLiteral] 5 # 19| 10: [LocalVariableDeclStmt] var ...; # 19| 1: [LocalVariableDeclExpr] y2 # 19| 0: [MethodCall] getName(...) # 19| -1: [VarAccess] y0 # 20| 11: [LocalVariableDeclStmt] var ...; # 20| 1: [LocalVariableDeclExpr] y3 # 20| 0: [MethodCall] getSetter(...) # 20| -1: [VarAccess] y0 # 21| 12: [LocalVariableDeclStmt] var ...; # 21| 1: [LocalVariableDeclExpr] y4 # 21| 0: [MemberRefExpr] ...::... # 21| -4: [AnonymousClass] new Function2(...) { ... } # 21| 1: [Constructor] #-----| 4: (Parameters) # 21| 0: [Parameter] # 21| 5: [BlockStmt] { ... } # 21| 0: [SuperConstructorInvocationStmt] super(...) # 21| 0: [IntegerLiteral] 2 # 21| 1: [ExprStmt] ; # 21| 0: [AssignExpr] ...=... # 21| 0: [VarAccess] this. # 21| -1: [ThisAccess] this # 21| 1: [VarAccess] # 21| 2: [FieldDeclaration] KMutableProperty1 ; # 21| -1: [TypeAccess] KMutableProperty1 # 21| 0: [TypeAccess] C # 21| 1: [TypeAccess] Integer # 21| 3: [Method] invoke #-----| 4: (Parameters) # 21| 0: [Parameter] a0 # 21| 1: [Parameter] a1 # 21| 5: [BlockStmt] { ... } # 21| 0: [ReturnStmt] return ... # 21| 0: [MethodCall] set(...) # 21| -1: [VarAccess] this. # 21| -1: [ThisAccess] this # 21| 0: [VarAccess] a0 # 21| 1: [VarAccess] a1 # 21| -3: [TypeAccess] Function2 # 21| 0: [TypeAccess] C # 21| 1: [TypeAccess] Integer # 21| 2: [TypeAccess] Unit # 21| 0: [VarAccess] y0 # 22| 13: [LocalVariableDeclStmt] var ...; # 22| 1: [LocalVariableDeclExpr] y5 # 22| 0: [PropertyRefExpr] ...::... # 22| -4: [AnonymousClass] new KMutableProperty0(...) { ... } # 22| 1: [Constructor] #-----| 4: (Parameters) # 22| 0: [Parameter] # 22| 5: [BlockStmt] { ... } # 22| 0: [SuperConstructorInvocationStmt] super(...) # 22| 1: [ExprStmt] ; # 22| 0: [AssignExpr] ...=... # 22| 0: [VarAccess] this. # 22| -1: [ThisAccess] this # 22| 1: [VarAccess] # 22| 2: [FieldDeclaration] C ; # 22| -1: [TypeAccess] C # 22| 3: [Method] get # 22| 5: [BlockStmt] { ... } # 22| 0: [ReturnStmt] return ... # 22| 0: [MethodCall] getP1(...) # 22| -1: [VarAccess] this. # 22| -1: [ThisAccess] this # 22| 4: [Method] invoke # 22| 5: [BlockStmt] { ... } # 22| 0: [ReturnStmt] return ... # 22| 0: [MethodCall] get(...) # 22| -1: [ThisAccess] this # 22| 5: [Method] set #-----| 4: (Parameters) # 22| 0: [Parameter] a0 # 22| 5: [BlockStmt] { ... } # 22| 0: [ReturnStmt] return ... # 22| 0: [MethodCall] setP1(...) # 22| -1: [VarAccess] this. # 22| -1: [ThisAccess] this # 22| 0: [VarAccess] a0 # 22| -3: [TypeAccess] KMutableProperty0 # 22| 0: [TypeAccess] Integer # 22| 0: [ClassInstanceExpr] new C(...) # 22| -3: [TypeAccess] C # 24| 14: [LocalVariableDeclStmt] var ...; # 24| 1: [LocalVariableDeclExpr] prop # 24| 0: [CastExpr] (...)... # 24| 0: [TypeAccess] KProperty2 # 24| 0: [TypeAccess] C # 24| 1: [TypeAccess] Integer # 24| 2: [TypeAccess] Integer # 24| 1: [MethodCall] single(...) # 24| -2: [TypeAccess] KCallable # 24| -1: [TypeAccess] CollectionsKt # 24| 0: [MethodCall] getMembers(...) # 24| -1: [TypeLiteral] C.class # 24| 0: [TypeAccess] C # 24| 1: [LambdaExpr] ...->... # 24| -4: [AnonymousClass] new Function1,Boolean>(...) { ... } # 24| 1: [Constructor] # 24| 5: [BlockStmt] { ... } # 24| 0: [SuperConstructorInvocationStmt] super(...) # 24| 2: [Method] invoke # 24| 3: [TypeAccess] boolean #-----| 4: (Parameters) # 24| 0: [Parameter] it # 24| 0: [TypeAccess] KCallable # 24| 0: [WildcardTypeAccess] ? ... # 24| 5: [BlockStmt] { ... } # 24| 0: [ReturnStmt] return ... # 24| 0: [ValueEQExpr] ... (value equals) ... # 24| 0: [MethodCall] getName(...) # 24| -1: [VarAccess] it # 24| 1: [StringLiteral] "p3" # 24| -3: [TypeAccess] Function1,Boolean> # 24| 0: [TypeAccess] KCallable # 24| 1: [TypeAccess] Boolean # 25| 15: [LocalVariableDeclStmt] var ...; # 25| 1: [LocalVariableDeclExpr] z0 # 25| 0: [MethodCall] get(...) # 25| -1: [VarAccess] prop # 25| 0: [ClassInstanceExpr] new C(...) # 25| -3: [TypeAccess] C # 25| 1: [IntegerLiteral] 5 # 28| 3: [Class] Ccc # 28| 1: [Constructor] Ccc # 28| 5: [BlockStmt] { ... } # 28| 0: [SuperConstructorInvocationStmt] super(...) # 28| 1: [BlockStmt] { ... } # 29| 2: [Method] m # 29| 3: [TypeAccess] double #-----| 4: (Parameters) # 29| 0: [Parameter] i # 29| 0: [TypeAccess] int # 29| 5: [BlockStmt] { ... } # 29| 0: [ReturnStmt] return ... # 29| 0: [DoubleLiteral] 5.0 # 32| 4: [Class] C # 32| 1: [Constructor] C # 32| 5: [BlockStmt] { ... } # 32| 0: [SuperConstructorInvocationStmt] super(...) # 32| 1: [BlockStmt] { ... } # 33| 0: [ExprStmt] ; # 33| 0: [KtInitializerAssignExpr] ...=... # 33| 0: [VarAccess] p0 # 34| 1: [ExprStmt] ; # 34| 0: [KtInitializerAssignExpr] ...=... # 34| 0: [VarAccess] p1 # 33| 2: [Method] getP0 # 33| 3: [TypeAccess] int # 33| 5: [BlockStmt] { ... } # 33| 0: [ReturnStmt] return ... # 33| 0: [VarAccess] this.p0 # 33| -1: [ThisAccess] this # 33| 3: [FieldDeclaration] int p0; # 33| -1: [TypeAccess] int # 33| 0: [IntegerLiteral] 1 # 34| 4: [Method] getP1 # 34| 3: [TypeAccess] int # 34| 5: [BlockStmt] { ... } # 34| 0: [ReturnStmt] return ... # 34| 0: [VarAccess] this.p1 # 34| -1: [ThisAccess] this # 34| 5: [FieldDeclaration] int p1; # 34| -1: [TypeAccess] int # 34| 0: [IntegerLiteral] 2 # 34| 6: [Method] setP1 # 34| 3: [TypeAccess] Unit #-----| 4: (Parameters) # 34| 0: [Parameter] # 34| 0: [TypeAccess] int # 34| 5: [BlockStmt] { ... } # 34| 0: [ExprStmt] ; # 34| 0: [AssignExpr] ...=... # 34| 0: [VarAccess] this.p1 # 34| -1: [ThisAccess] this # 34| 1: [VarAccess] # 36| 7: [Method] getP2 # 36| 3: [TypeAccess] int # 36| 5: [BlockStmt] { ... } # 36| 0: [ReturnStmt] return ... # 36| 0: [IntegerLiteral] 1 # 37| 8: [Method] setP2 # 37| 3: [TypeAccess] Unit #-----| 4: (Parameters) # 37| 0: [Parameter] value # 37| 0: [TypeAccess] int # 37| 5: [BlockStmt] { ... } # 37| 0: [ReturnStmt] return ... # 37| 0: [VarAccess] INSTANCE # 40| 9: [ExtensionMethod] getP3 # 40| 3: [TypeAccess] int #-----| 4: (Parameters) # 39| 0: [Parameter] # 39| 0: [TypeAccess] int # 40| 5: [BlockStmt] { ... } # 40| 0: [ReturnStmt] return ... # 40| 0: [IntegerLiteral] 1 # 41| 10: [ExtensionMethod] setP3 # 41| 3: [TypeAccess] Unit #-----| 4: (Parameters) # 39| 0: [Parameter] # 39| 0: [TypeAccess] int # 41| 1: [Parameter] value # 41| 0: [TypeAccess] int # 41| 5: [BlockStmt] { ... } # 41| 0: [ReturnStmt] return ... # 41| 0: [VarAccess] INSTANCE # 58| 3: [Class] Class1 # 58| 3: [Constructor] Class1 # 58| 5: [BlockStmt] { ... } # 58| 0: [SuperConstructorInvocationStmt] super(...) # 58| 1: [BlockStmt] { ... } # 59| 4: [Method] fn # 59| 3: [TypeAccess] Unit # 59| 5: [BlockStmt] { ... } # 60| 0: [ExprStmt] ; # 60| 0: [MethodCall] println(...) # 60| -1: [TypeAccess] ConsoleKt # 60| 0: [MemberRefExpr] ...::... # 60| -4: [AnonymousClass] new Function2,Integer,String>(...) { ... } # 60| 1: [Constructor] # 60| 5: [BlockStmt] { ... } # 60| 0: [SuperConstructorInvocationStmt] super(...) # 60| 0: [IntegerLiteral] 2 # 60| 2: [Method] invoke #-----| 4: (Parameters) # 60| 0: [Parameter] a0 # 60| 1: [Parameter] a1 # 60| 5: [BlockStmt] { ... } # 60| 0: [ReturnStmt] return ... # 60| 0: [MethodCall] m1(...) # 60| -1: [VarAccess] a0 # 60| 0: [VarAccess] a1 # 60| -3: [TypeAccess] Function2,Integer,String> # 60| 0: [TypeAccess] Generic # 60| 0: [TypeAccess] Integer # 60| 1: [TypeAccess] Integer # 60| 2: [TypeAccess] String # 61| 1: [ExprStmt] ; # 61| 0: [MethodCall] println(...) # 61| -1: [TypeAccess] ConsoleKt # 61| 0: [MemberRefExpr] ...::... # 61| -4: [AnonymousClass] new Function1(...) { ... } # 61| 1: [Constructor] #-----| 4: (Parameters) # 61| 0: [Parameter] # 61| 5: [BlockStmt] { ... } # 61| 0: [SuperConstructorInvocationStmt] super(...) # 61| 0: [IntegerLiteral] 1 # 61| 1: [ExprStmt] ; # 61| 0: [AssignExpr] ...=... # 61| 0: [VarAccess] this. # 61| -1: [ThisAccess] this # 61| 1: [VarAccess] # 61| 2: [FieldDeclaration] Generic ; # 61| -1: [TypeAccess] Generic # 61| 0: [TypeAccess] Integer # 61| 3: [Method] invoke #-----| 4: (Parameters) # 61| 0: [Parameter] a0 # 61| 5: [BlockStmt] { ... } # 61| 0: [ReturnStmt] return ... # 61| 0: [MethodCall] m1(...) # 61| -1: [VarAccess] this. # 61| -1: [ThisAccess] this # 61| 0: [VarAccess] a0 # 61| -3: [TypeAccess] Function1 # 61| 0: [TypeAccess] Integer # 61| 1: [TypeAccess] String # 61| 0: [ClassInstanceExpr] new Generic(...) # 61| -3: [TypeAccess] Generic # 61| 0: [TypeAccess] Integer # 62| 2: [ExprStmt] ; # 62| 0: [MethodCall] println(...) # 62| -1: [TypeAccess] ConsoleKt # 62| 0: [MemberRefExpr] ...::... # 62| -4: [AnonymousClass] new Function1,String>(...) { ... } # 62| 1: [Constructor] # 62| 5: [BlockStmt] { ... } # 62| 0: [SuperConstructorInvocationStmt] super(...) # 62| 0: [IntegerLiteral] 1 # 62| 2: [Method] invoke #-----| 4: (Parameters) # 62| 0: [Parameter] a0 # 62| 5: [BlockStmt] { ... } # 62| 0: [ReturnStmt] return ... # 62| 0: [MethodCall] ext1(...) # 62| -2: [TypeAccess] Integer # 62| -1: [TypeAccess] ReflectionKt # 62| 0: [VarAccess] a0 # 62| -3: [TypeAccess] Function1,String> # 62| 0: [TypeAccess] Generic # 62| 0: [TypeAccess] Integer # 62| 1: [TypeAccess] String # 63| 3: [ExprStmt] ; # 63| 0: [MethodCall] println(...) # 63| -1: [TypeAccess] ConsoleKt # 63| 0: [MemberRefExpr] ...::... # 63| -4: [AnonymousClass] new Function0(...) { ... } # 63| 1: [Constructor] #-----| 4: (Parameters) # 63| 0: [Parameter] # 63| 5: [BlockStmt] { ... } # 63| 0: [SuperConstructorInvocationStmt] super(...) # 63| 0: [IntegerLiteral] 0 # 63| 1: [ExprStmt] ; # 63| 0: [AssignExpr] ...=... # 63| 0: [VarAccess] this. # 63| -1: [ThisAccess] this # 63| 1: [VarAccess] # 63| 2: [FieldDeclaration] Generic ; # 63| -1: [TypeAccess] Generic # 63| 0: [TypeAccess] Integer # 63| 3: [Method] invoke # 63| 5: [BlockStmt] { ... } # 63| 0: [ReturnStmt] return ... # 63| 0: [MethodCall] ext1(...) # 63| -2: [TypeAccess] Integer # 63| -1: [TypeAccess] ReflectionKt # 63| 0: [VarAccess] this. # 63| -1: [ThisAccess] this # 63| -3: [TypeAccess] Function0 # 63| 0: [TypeAccess] String # 63| 0: [ClassInstanceExpr] new Generic(...) # 63| -3: [TypeAccess] Generic # 63| 0: [TypeAccess] Integer # 64| 4: [ExprStmt] ; # 64| 0: [MethodCall] println(...) # 64| -1: [TypeAccess] ConsoleKt # 64| 0: [MemberRefExpr] ...::... # 64| -4: [AnonymousClass] new Function1,String>(...) { ... } # 64| 1: [Constructor] # 64| 5: [BlockStmt] { ... } # 64| 0: [SuperConstructorInvocationStmt] super(...) # 64| 0: [IntegerLiteral] 1 # 64| 2: [Method] invoke #-----| 4: (Parameters) # 64| 0: [Parameter] a0 # 64| 5: [BlockStmt] { ... } # 64| 0: [ReturnStmt] return ... # 64| 0: [MethodCall] ext2(...) # 64| -1: [TypeAccess] ReflectionKt # 64| 0: [VarAccess] a0 # 64| -3: [TypeAccess] Function1,String> # 64| 0: [TypeAccess] Generic # 64| 0: [TypeAccess] Integer # 64| 1: [TypeAccess] String # 65| 5: [ExprStmt] ; # 65| 0: [MethodCall] println(...) # 65| -1: [TypeAccess] ConsoleKt # 65| 0: [MemberRefExpr] ...::... # 65| -4: [AnonymousClass] new Function0(...) { ... } # 65| 1: [Constructor] #-----| 4: (Parameters) # 65| 0: [Parameter] # 65| 5: [BlockStmt] { ... } # 65| 0: [SuperConstructorInvocationStmt] super(...) # 65| 0: [IntegerLiteral] 0 # 65| 1: [ExprStmt] ; # 65| 0: [AssignExpr] ...=... # 65| 0: [VarAccess] this. # 65| -1: [ThisAccess] this # 65| 1: [VarAccess] # 65| 2: [FieldDeclaration] Generic ; # 65| -1: [TypeAccess] Generic # 65| 0: [TypeAccess] Integer # 65| 3: [Method] invoke # 65| 5: [BlockStmt] { ... } # 65| 0: [ReturnStmt] return ... # 65| 0: [MethodCall] ext2(...) # 65| -1: [TypeAccess] ReflectionKt # 65| 0: [VarAccess] this. # 65| -1: [ThisAccess] this # 65| -3: [TypeAccess] Function0 # 65| 0: [TypeAccess] String # 65| 0: [ClassInstanceExpr] new Generic(...) # 65| -3: [TypeAccess] Generic # 65| 0: [TypeAccess] Integer # 67| 6: [ExprStmt] ; # 67| 0: [MethodCall] println(...) # 67| -1: [TypeAccess] ConsoleKt # 67| 0: [PropertyRefExpr] ...::... # 67| -4: [AnonymousClass] new KMutableProperty1,Integer>(...) { ... } # 67| 1: [Constructor] # 67| 5: [BlockStmt] { ... } # 67| 0: [SuperConstructorInvocationStmt] super(...) # 67| 2: [Method] get #-----| 4: (Parameters) # 67| 0: [Parameter] a0 # 67| 5: [BlockStmt] { ... } # 67| 0: [ReturnStmt] return ... # 67| 0: [MethodCall] getP2(...) # 67| -1: [VarAccess] a0 # 67| 3: [Method] invoke #-----| 4: (Parameters) # 67| 0: [Parameter] a0 # 67| 5: [BlockStmt] { ... } # 67| 0: [ReturnStmt] return ... # 67| 0: [MethodCall] get(...) # 67| -1: [ThisAccess] this # 67| 0: [VarAccess] a0 # 67| 4: [Method] set #-----| 4: (Parameters) # 67| 0: [Parameter] a0 # 67| 1: [Parameter] a1 # 67| 5: [BlockStmt] { ... } # 67| 0: [ReturnStmt] return ... # 67| 0: [MethodCall] setP2(...) # 67| -1: [VarAccess] a0 # 67| 0: [VarAccess] a1 # 67| -3: [TypeAccess] KMutableProperty1,Integer> # 67| 0: [TypeAccess] Generic # 67| 0: [TypeAccess] Integer # 67| 1: [TypeAccess] Integer # 68| 7: [ExprStmt] ; # 68| 0: [MethodCall] println(...) # 68| -1: [TypeAccess] ConsoleKt # 68| 0: [PropertyRefExpr] ...::... # 68| -4: [AnonymousClass] new KMutableProperty0(...) { ... } # 68| 1: [Constructor] #-----| 4: (Parameters) # 68| 0: [Parameter] # 68| 5: [BlockStmt] { ... } # 68| 0: [SuperConstructorInvocationStmt] super(...) # 68| 1: [ExprStmt] ; # 68| 0: [AssignExpr] ...=... # 68| 0: [VarAccess] this. # 68| -1: [ThisAccess] this # 68| 1: [VarAccess] # 68| 2: [FieldDeclaration] Generic ; # 68| -1: [TypeAccess] Generic # 68| 0: [TypeAccess] Integer # 68| 3: [Method] get # 68| 5: [BlockStmt] { ... } # 68| 0: [ReturnStmt] return ... # 68| 0: [MethodCall] getP2(...) # 68| -1: [VarAccess] this. # 68| -1: [ThisAccess] this # 68| 4: [Method] invoke # 68| 5: [BlockStmt] { ... } # 68| 0: [ReturnStmt] return ... # 68| 0: [MethodCall] get(...) # 68| -1: [ThisAccess] this # 68| 5: [Method] set #-----| 4: (Parameters) # 68| 0: [Parameter] a0 # 68| 5: [BlockStmt] { ... } # 68| 0: [ReturnStmt] return ... # 68| 0: [MethodCall] setP2(...) # 68| -1: [VarAccess] this. # 68| -1: [ThisAccess] this # 68| 0: [VarAccess] a0 # 68| -3: [TypeAccess] KMutableProperty0 # 68| 0: [TypeAccess] Integer # 68| 0: [ClassInstanceExpr] new Generic(...) # 68| -3: [TypeAccess] Generic # 68| 0: [TypeAccess] Integer # 70| 8: [ExprStmt] ; # 70| 0: [MethodCall] println(...) # 70| -1: [TypeAccess] ConsoleKt # 70| 0: [PropertyRefExpr] ...::... # 70| -4: [AnonymousClass] new KProperty0(...) { ... } # 70| 1: [Constructor] #-----| 4: (Parameters) # 70| 0: [Parameter] # 70| 5: [BlockStmt] { ... } # 70| 0: [SuperConstructorInvocationStmt] super(...) # 70| 1: [ExprStmt] ; # 70| 0: [AssignExpr] ...=... # 70| 0: [VarAccess] this. # 70| -1: [ThisAccess] this # 70| 1: [VarAccess] # 70| 2: [FieldDeclaration] IntCompanionObject ; # 70| -1: [TypeAccess] IntCompanionObject # 70| 3: [Method] get # 70| 5: [BlockStmt] { ... } # 70| 0: [ReturnStmt] return ... # 70| 0: [MethodCall] getMAX_VALUE(...) # 70| -1: [VarAccess] this. # 70| -1: [ThisAccess] this # 70| 4: [Method] invoke # 70| 5: [BlockStmt] { ... } # 70| 0: [ReturnStmt] return ... # 70| 0: [MethodCall] get(...) # 70| -1: [ThisAccess] this # 70| -3: [TypeAccess] KProperty0 # 70| 0: [TypeAccess] Integer # 70| 0: [VarAccess] Companion # 71| 9: [ExprStmt] ; # 71| 0: [MethodCall] println(...) # 71| -1: [TypeAccess] ConsoleKt # 71| 0: [PropertyRefExpr] ...::... # 71| -4: [AnonymousClass] new KProperty0(...) { ... } # 71| 1: [Constructor] # 71| 5: [BlockStmt] { ... } # 71| 0: [SuperConstructorInvocationStmt] super(...) # 71| 2: [Method] get # 71| 5: [BlockStmt] { ... } # 71| 0: [ReturnStmt] return ... # 71| 0: [VarAccess] MAX_VALUE # 71| 3: [Method] invoke # 71| 5: [BlockStmt] { ... } # 71| 0: [ReturnStmt] return ... # 71| 0: [MethodCall] get(...) # 71| -1: [ThisAccess] this # 71| -3: [TypeAccess] KProperty0 # 71| 0: [TypeAccess] Integer # 72| 10: [ExprStmt] ; # 72| 0: [MethodCall] println(...) # 72| -1: [TypeAccess] ConsoleKt # 72| 0: [PropertyRefExpr] ...::... # 72| -4: [AnonymousClass] new KMutableProperty0(...) { ... } # 72| 1: [Constructor] #-----| 4: (Parameters) # 72| 0: [Parameter] # 72| 5: [BlockStmt] { ... } # 72| 0: [SuperConstructorInvocationStmt] super(...) # 72| 1: [ExprStmt] ; # 72| 0: [AssignExpr] ...=... # 72| 0: [VarAccess] this. # 72| -1: [ThisAccess] this # 72| 1: [VarAccess] # 72| 2: [FieldDeclaration] Rectangle ; # 72| -1: [TypeAccess] Rectangle # 72| 3: [Method] get # 72| 5: [BlockStmt] { ... } # 72| 0: [ReturnStmt] return ... # 72| 0: [VarAccess] this..height # 72| -1: [VarAccess] this. # 72| -1: [ThisAccess] this # 72| 4: [Method] invoke # 72| 5: [BlockStmt] { ... } # 72| 0: [ReturnStmt] return ... # 72| 0: [MethodCall] get(...) # 72| -1: [ThisAccess] this # 72| 5: [Method] set #-----| 4: (Parameters) # 72| 0: [Parameter] a0 # 72| 5: [BlockStmt] { ... } # 72| 0: [ExprStmt] ; # 72| 0: [AssignExpr] ...=... # 72| 0: [VarAccess] this..height # 72| -1: [VarAccess] this. # 72| -1: [ThisAccess] this # 72| 1: [VarAccess] a0 # 72| -3: [TypeAccess] KMutableProperty0 # 72| 0: [TypeAccess] Integer # 72| 0: [ClassInstanceExpr] new Rectangle(...) # 72| -3: [TypeAccess] Rectangle # 75| 5: [Class,GenericType,ParameterizedType] Generic #-----| -2: (Generic Parameters) # 75| 0: [TypeVariable] T1 # 75| 1: [Constructor] Generic # 75| 5: [BlockStmt] { ... } # 75| 0: [SuperConstructorInvocationStmt] super(...) # 75| 1: [BlockStmt] { ... } # 76| 2: [Method] m1 # 76| 3: [TypeAccess] String #-----| 4: (Parameters) # 76| 0: [Parameter] i # 76| 0: [TypeAccess] T1 # 76| 5: [BlockStmt] { ... } # 76| 0: [ReturnStmt] return ... # 76| 0: [MethodCall] toString(...) # 76| -1: [ThisAccess] this # 78| 3: [Method] getP2 # 78| 3: [TypeAccess] T1 # 78| 5: [BlockStmt] { ... } # 78| 0: [ReturnStmt] return ... # 78| 0: [NullLiteral] null # 79| 4: [Method] setP2 # 79| 3: [TypeAccess] Unit #-----| 4: (Parameters) # 79| 0: [Parameter] value # 79| 0: [TypeAccess] T1 # 79| 5: [BlockStmt] { ... } # 79| 0: [ReturnStmt] return ... # 79| 0: [VarAccess] INSTANCE # 83| 4: [Class,GenericType,ParameterizedType] Class2 #-----| -2: (Generic Parameters) # 83| 0: [TypeVariable] T # 83| 3: [Constructor] Class2 #-----| 4: (Parameters) # 83| 0: [Parameter] value # 83| 0: [TypeAccess] T # 83| 5: [BlockStmt] { ... } # 83| 0: [SuperConstructorInvocationStmt] super(...) # 83| 1: [BlockStmt] { ... } # 83| 0: [ExprStmt] ; # 83| 0: [KtInitializerAssignExpr] ...=... # 83| 0: [VarAccess] value # 83| 4: [FieldDeclaration] T value; # 83| -1: [TypeAccess] T # 83| 0: [VarAccess] value # 83| 5: [Method] getValue # 83| 3: [TypeAccess] T # 83| 5: [BlockStmt] { ... } # 83| 0: [ReturnStmt] return ... # 83| 0: [VarAccess] this.value # 83| -1: [ThisAccess] this # 85| 6: [Class,GenericType,ParameterizedType] Inner #-----| -2: (Generic Parameters) # 85| 0: [TypeVariable] T1 # 86| 1: [Constructor] Inner #-----| 4: (Parameters) # 86| 0: [Parameter] t # 86| 0: [TypeAccess] T1 # 86| 5: [BlockStmt] { ... } # 86| 0: [SuperConstructorInvocationStmt] super(...) # 86| 1: [BlockStmt] { ... } # 89| 8: [Method] test # 89| 3: [TypeAccess] Unit # 89| 5: [BlockStmt] { ... } # 90| 0: [ExprStmt] ; # 90| 0: [MethodCall] fn11(...) # 90| -3: [TypeAccess] Inner # 90| 0: [TypeAccess] String # 90| 1: [TypeAccess] T # 90| -2: [TypeAccess] String # 90| -1: [TypeAccess] ReflectionKt # 90| 0: [StringLiteral] "" # 90| 1: [MemberRefExpr] ...::... # 90| -4: [AnonymousClass] new Function1>(...) { ... } # 90| 1: [Constructor] #-----| 4: (Parameters) # 90| 0: [Parameter] # 90| 5: [BlockStmt] { ... } # 90| 0: [SuperConstructorInvocationStmt] super(...) # 90| 0: [IntegerLiteral] 1 # 90| 1: [ExprStmt] ; # 90| 0: [AssignExpr] ...=... # 90| 0: [VarAccess] this. # 90| -1: [ThisAccess] this # 90| 1: [VarAccess] # 90| 2: [FieldDeclaration] Class2 ; # 90| -1: [TypeAccess] Class2 # 90| 0: [TypeAccess] T # 90| 3: [Method] invoke #-----| 4: (Parameters) # 90| 0: [Parameter] a0 # 90| 5: [BlockStmt] { ... } # 90| 0: [ReturnStmt] return ... # 90| 0: [ClassInstanceExpr] new Inner(...) # 90| -3: [TypeAccess] Inner # 90| 0: [TypeAccess] String # 90| -2: [VarAccess] this. # 90| -1: [ThisAccess] this # 90| 0: [VarAccess] a0 # 90| -3: [TypeAccess] Function1> # 90| 0: [TypeAccess] String # 90| 1: [TypeAccess] Inner # 90| 0: [TypeAccess] String # 90| 0: [ThisAccess] this # 105| 6: [Class] Base1 # 105| 1: [Constructor] Base1 #-----| 4: (Parameters) # 105| 0: [Parameter] prop1 # 105| 0: [TypeAccess] int # 105| 5: [BlockStmt] { ... } # 105| 0: [SuperConstructorInvocationStmt] super(...) # 105| 1: [BlockStmt] { ... } # 105| 0: [ExprStmt] ; # 105| 0: [KtInitializerAssignExpr] ...=... # 105| 0: [VarAccess] prop1 # 105| 2: [Method] getProp1 # 105| 3: [TypeAccess] int # 105| 5: [BlockStmt] { ... } # 105| 0: [ReturnStmt] return ... # 105| 0: [VarAccess] this.prop1 # 105| -1: [ThisAccess] this # 105| 3: [FieldDeclaration] int prop1; # 105| -1: [TypeAccess] int # 105| 0: [VarAccess] prop1 # 105| 4: [Method] setProp1 # 105| 3: [TypeAccess] Unit #-----| 4: (Parameters) # 105| 0: [Parameter] # 105| 0: [TypeAccess] int # 105| 5: [BlockStmt] { ... } # 105| 0: [ExprStmt] ; # 105| 0: [AssignExpr] ...=... # 105| 0: [VarAccess] this.prop1 # 105| -1: [ThisAccess] this # 105| 1: [VarAccess] # 107| 7: [Class] Derived1 # 107| 1: [Constructor] Derived1 #-----| 4: (Parameters) # 107| 0: [Parameter] prop1 # 107| 0: [TypeAccess] int # 107| 5: [BlockStmt] { ... } # 107| 0: [SuperConstructorInvocationStmt] super(...) # 107| 0: [VarAccess] prop1 # 107| 1: [BlockStmt] { ... } # 108| 2: [Method] fn # 108| 3: [TypeAccess] Unit # 108| 5: [BlockStmt] { ... } # 109| 0: [ExprStmt] ; # 109| 0: [MethodCall] println(...) # 109| -1: [TypeAccess] ConsoleKt # 109| 0: [PropertyRefExpr] ...::... # 109| -4: [AnonymousClass] new KMutableProperty0(...) { ... } # 109| 1: [Constructor] #-----| 4: (Parameters) # 109| 0: [Parameter] # 109| 5: [BlockStmt] { ... } # 109| 0: [SuperConstructorInvocationStmt] super(...) # 109| 1: [ExprStmt] ; # 109| 0: [AssignExpr] ...=... # 109| 0: [VarAccess] this. # 109| -1: [ThisAccess] this # 109| 1: [VarAccess] # 109| 2: [FieldDeclaration] Derived1 ; # 109| -1: [TypeAccess] Derived1 # 109| 3: [Method] get # 109| 5: [BlockStmt] { ... } # 109| 0: [ReturnStmt] return ... # 109| 0: [MethodCall] getProp1(...) # 109| -1: [VarAccess] this. # 109| -1: [ThisAccess] this # 109| 4: [Method] invoke # 109| 5: [BlockStmt] { ... } # 109| 0: [ReturnStmt] return ... # 109| 0: [MethodCall] get(...) # 109| -1: [ThisAccess] this # 109| 5: [Method] set #-----| 4: (Parameters) # 109| 0: [Parameter] a0 # 109| 5: [BlockStmt] { ... } # 109| 0: [ReturnStmt] return ... # 109| 0: [MethodCall] setProp1(...) # 109| -1: [VarAccess] this. # 109| -1: [ThisAccess] this # 109| 0: [VarAccess] a0 # 109| -3: [TypeAccess] KMutableProperty0 # 109| 0: [TypeAccess] Integer # 109| 0: [ThisAccess] this # 113| 8: [Class] LocalFn # 113| 1: [Constructor] LocalFn # 113| 5: [BlockStmt] { ... } # 113| 0: [SuperConstructorInvocationStmt] super(...) # 113| 1: [BlockStmt] { ... } # 114| 2: [Method] fn # 114| 3: [TypeAccess] Unit # 114| 5: [BlockStmt] { ... } # 115| 0: [LocalTypeDeclStmt] class ... # 115| 0: [LocalClass] # 115| 1: [Constructor] # 115| 5: [BlockStmt] { ... } # 115| 0: [SuperConstructorInvocationStmt] super(...) # 115| 2: [Method] fn1 # 115| 3: [TypeAccess] Unit #-----| 4: (Parameters) # 115| 0: [Parameter] i # 115| 0: [TypeAccess] int # 115| 5: [BlockStmt] { ... } # 116| 1: [LocalVariableDeclStmt] var ...; # 116| 1: [LocalVariableDeclExpr] x # 116| 0: [MemberRefExpr] ...::... # 116| -4: [AnonymousClass] new Function1(...) { ... } # 116| 1: [Constructor] # 116| 5: [BlockStmt] { ... } # 116| 0: [SuperConstructorInvocationStmt] super(...) # 116| 0: [IntegerLiteral] 1 # 116| 2: [Method] invoke #-----| 4: (Parameters) # 116| 0: [Parameter] a0 # 116| 5: [BlockStmt] { ... } # 116| 0: [ReturnStmt] return ... # 116| 0: [MethodCall] fn1(...) # 116| -1: [ClassInstanceExpr] new (...) # 116| -3: [TypeAccess] Object # 116| 0: [VarAccess] a0 # 116| -3: [TypeAccess] Function1 # 116| 0: [TypeAccess] Integer # 116| 1: [TypeAccess] Unit # 139| 9: [Class] MemberOptionalsTest # 139| 1: [Constructor] MemberOptionalsTest # 139| 5: [BlockStmt] { ... } # 139| 0: [SuperConstructorInvocationStmt] super(...) # 139| 1: [BlockStmt] { ... } # 140| 2: [Method] takesOptionalParam # 140| 3: [TypeAccess] int #-----| 4: (Parameters) # 140| 0: [Parameter] x # 140| 0: [TypeAccess] int # 140| 1: [Parameter] y # 140| 0: [TypeAccess] int # 140| 5: [BlockStmt] { ... } # 140| 0: [ReturnStmt] return ... # 140| 0: [AddExpr] ... + ... # 140| 0: [VarAccess] x # 140| 1: [VarAccess] y # 140| 3: [Method] takesOptionalParam$default # 140| 3: [TypeAccess] int #-----| 4: (Parameters) # 140| 0: [Parameter] p0 # 140| 0: [TypeAccess] MemberOptionalsTest # 140| 1: [Parameter] p1 # 140| 0: [TypeAccess] int # 140| 2: [Parameter] p2 # 140| 0: [TypeAccess] int # 140| 3: [Parameter] p3 # 140| 0: [TypeAccess] int # 140| 4: [Parameter] p4 # 140| 0: [TypeAccess] Object # 140| 5: [BlockStmt] { ... } # 140| 0: [IfStmt] if (...) # 140| 0: [EQExpr] ... == ... # 140| 0: [AndBitwiseExpr] ... & ... # 140| 0: [IntegerLiteral] 2 # 140| 1: [VarAccess] p3 # 140| 1: [IntegerLiteral] 0 # 140| 1: [ExprStmt] ; # 140| 0: [AssignExpr] ...=... # 140| 0: [VarAccess] p2 # 140| 1: [IntegerLiteral] 0 # 140| 1: [ReturnStmt] return ... # 140| 0: [MethodCall] takesOptionalParam(...) # 140| -1: [VarAccess] p0 # 140| 0: [VarAccess] p1 # 140| 1: [VarAccess] p2 # 157| 10: [Class] ConstructorOptional # 157| 1: [Constructor] ConstructorOptional #-----| 4: (Parameters) # 157| 0: [Parameter] x # 157| 0: [TypeAccess] int # 157| 1: [Parameter] y # 157| 0: [TypeAccess] int # 157| 5: [BlockStmt] { ... } # 157| 0: [SuperConstructorInvocationStmt] super(...) # 157| 1: [BlockStmt] { ... } # 157| 2: [Constructor] ConstructorOptional #-----| 4: (Parameters) # 157| 0: [Parameter] p0 # 157| 0: [TypeAccess] int # 157| 1: [Parameter] p1 # 157| 0: [TypeAccess] int # 157| 2: [Parameter] p2 # 157| 0: [TypeAccess] int # 157| 3: [Parameter] p3 # 157| 0: [TypeAccess] DefaultConstructorMarker # 157| 5: [BlockStmt] { ... } # 157| 0: [IfStmt] if (...) # 157| 0: [EQExpr] ... == ... # 157| 0: [AndBitwiseExpr] ... & ... # 157| 0: [IntegerLiteral] 2 # 157| 1: [VarAccess] p2 # 157| 1: [IntegerLiteral] 0 # 157| 1: [ExprStmt] ; # 157| 0: [AssignExpr] ...=... # 157| 0: [VarAccess] p1 # 157| 1: [IntegerLiteral] 0 # 157| 1: [ThisConstructorInvocationStmt] this(...) # 157| 0: [VarAccess] p0 # 157| 1: [VarAccess] p1