Files
codeql/java/ql/test-kotlin1/library-tests/reflection/PrintAst.expected
2023-11-21 15:28:12 +00:00

1772 lines
88 KiB
Plaintext

reflection.kt:
# 0| [CompilationUnit] reflection
# 0| 1: [Class] ReflectionKt
# 47| 1: [ExtensionMethod] getLastChar
# 47| 3: [TypeAccess] char
#-----| 4: (Parameters)
# 46| 0: [Parameter] <this>
# 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] <Expr>;
# 50| 0: [MethodCall] println(...)
# 50| -1: [TypeAccess] ConsoleKt
# 50| 0: [MethodCall] get(...)
# 50| -1: [PropertyRefExpr] ...::...
# 50| -4: [AnonymousClass] new KProperty1<String,Character>(...) { ... }
# 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<String,Character>
# 50| 0: [TypeAccess] String
# 50| 1: [TypeAccess] Character
# 50| 0: [StringLiteral] "abc"
# 51| 1: [ExprStmt] <Expr>;
# 51| 0: [MethodCall] println(...)
# 51| -1: [TypeAccess] ConsoleKt
# 51| 0: [MethodCall] get(...)
# 51| -1: [PropertyRefExpr] ...::...
# 51| -4: [AnonymousClass] new KProperty0<Character>(...) { ... }
# 51| 1: [Constructor]
#-----| 4: (Parameters)
# 51| 0: [Parameter] <extensionReceiver>
# 51| 5: [BlockStmt] { ... }
# 51| 0: [SuperConstructorInvocationStmt] super(...)
# 51| 1: [ExprStmt] <Expr>;
# 51| 0: [AssignExpr] ...=...
# 51| 0: [VarAccess] this.<extensionReceiver>
# 51| -1: [ThisAccess] this
# 51| 1: [VarAccess] <extensionReceiver>
# 51| 2: [FieldDeclaration] String <extensionReceiver>;
# 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.<extensionReceiver>
# 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<Character>
# 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] <this>
# 54| 0: [TypeAccess] Generic<T2>
# 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] <this>
# 56| 0: [TypeAccess] Generic<Integer>
# 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] <Expr>;
# 97| 0: [MethodCall] fn11(...)
# 97| -3: [TypeAccess] Class2<String>
# 97| 0: [TypeAccess] String
# 97| -2: [TypeAccess] String
# 97| -1: [TypeAccess] ReflectionKt
# 97| 0: [StringLiteral] ""
# 97| 1: [MemberRefExpr] ...::...
# 97| -4: [AnonymousClass] new Function1<String,Class2<String>>(...) { ... }
# 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<String>(...)
# 97| -3: [TypeAccess] Class2<String>
# 97| 0: [TypeAccess] String
# 97| 0: [VarAccess] a0
# 97| -3: [TypeAccess] Function1<String,Class2<String>>
# 97| 0: [TypeAccess] String
# 97| 1: [TypeAccess] Class2<String>
# 97| 0: [TypeAccess] String
# 98| 1: [ExprStmt] <Expr>;
# 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<String,Unit>(...) { ... }
# 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<String,Unit>
# 98| 0: [TypeAccess] String
# 98| 1: [TypeAccess] Unit
# 99| 2: [ExprStmt] <Expr>;
# 99| 0: [MethodCall] fn12(...)
# 99| -3: [TypeAccess] Inner<String>
# 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<String,Inner<String>>(...) { ... }
# 99| 1: [Constructor]
#-----| 4: (Parameters)
# 99| 0: [Parameter] <dispatchReceiver>
# 99| 5: [BlockStmt] { ... }
# 99| 0: [SuperConstructorInvocationStmt] super(...)
# 99| 0: [IntegerLiteral] 1
# 99| 1: [ExprStmt] <Expr>;
# 99| 0: [AssignExpr] ...=...
# 99| 0: [VarAccess] this.<dispatchReceiver>
# 99| -1: [ThisAccess] this
# 99| 1: [VarAccess] <dispatchReceiver>
# 99| 2: [FieldDeclaration] Class2<Integer> <dispatchReceiver>;
# 99| -1: [TypeAccess] Class2<Integer>
# 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<String>(...)
# 99| -3: [TypeAccess] Inner<String>
# 99| 0: [TypeAccess] String
# 99| -2: [VarAccess] this.<dispatchReceiver>
# 99| -1: [ThisAccess] this
# 99| 0: [VarAccess] a0
# 99| -3: [TypeAccess] Function1<String,Inner<String>>
# 99| 0: [TypeAccess] String
# 99| 1: [TypeAccess] Inner<String>
# 99| 0: [TypeAccess] String
# 99| 0: [ClassInstanceExpr] new Class2<Integer>(...)
# 99| -3: [TypeAccess] Class2<Integer>
# 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<? super T,? extends R>
# 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<? super T1,? extends R>
# 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<Unit>
# 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] <Expr>;
# 126| 0: [MethodCall] fn2(...)
# 126| -1: [TypeAccess] ReflectionKt
# 126| 0: [StmtExpr] <Stmt>
# 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] <Expr>;
# 126| 0: [ImplicitCoercionToUnitExpr] <implicit coercion to unit>
# 126| 0: [TypeAccess] Unit
# 126| 1: [MethodCall] fn1(...)
# 126| -1: [TypeAccess] ReflectionKt
# 126| 1: [ExprStmt] <Expr>;
# 126| 0: [MemberRefExpr] ...::...
# 126| -4: [AnonymousClass] new Function0<Unit>(...) { ... }
# 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<Unit>
# 126| 0: [TypeAccess] Unit
# 129| 12: [Method] expectsOneParam
# 129| 3: [TypeAccess] int
#-----| 4: (Parameters)
# 129| 0: [Parameter] f
# 129| 0: [TypeAccess] Function1<? super Integer,Integer>
# 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] <Expr>;
# 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] <Expr>;
# 134| 0: [ImplicitCoercionToUnitExpr] <implicit coercion to unit>
# 134| 0: [TypeAccess] Unit
# 134| 1: [MethodCall] expectsOneParam(...)
# 134| -1: [TypeAccess] ReflectionKt
# 134| 0: [StmtExpr] <Stmt>
# 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] <Expr>;
# 134| 0: [MemberRefExpr] ...::...
# 134| -4: [AnonymousClass] new Function1<Integer,Integer>(...) { ... }
# 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<Integer,Integer>
# 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<? super MemberOptionalsTest,? super Integer,Integer>
# 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] <Expr>;
# 144| 0: [ImplicitCoercionToUnitExpr] <implicit coercion to unit>
# 144| 0: [TypeAccess] Unit
# 144| 1: [MethodCall] expectsOneParam(...)
# 144| -1: [TypeAccess] ReflectionKt
# 144| 0: [StmtExpr] <Stmt>
# 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] <Expr>;
# 144| 0: [MemberRefExpr] ...::...
# 144| -4: [AnonymousClass] new Function1<Integer,Integer>(...) { ... }
# 144| 1: [Constructor]
#-----| 4: (Parameters)
# 144| 0: [Parameter] <extensionReceiver>
# 144| 5: [BlockStmt] { ... }
# 144| 0: [SuperConstructorInvocationStmt] super(...)
# 144| 0: [IntegerLiteral] 1
# 144| 1: [ExprStmt] <Expr>;
# 144| 0: [AssignExpr] ...=...
# 144| 0: [VarAccess] this.<extensionReceiver>
# 144| -1: [ThisAccess] this
# 144| 1: [VarAccess] <extensionReceiver>
# 144| 2: [FieldDeclaration] MemberOptionalsTest <extensionReceiver>;
# 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.<extensionReceiver>
# 144| -1: [ThisAccess] this
# 144| 1: [VarAccess] a0
# 144| -3: [TypeAccess] Function1<Integer,Integer>
# 144| 0: [TypeAccess] Integer
# 144| 1: [TypeAccess] Integer
# 144| 0: [VarAccess] m
# 145| 1: [ExprStmt] <Expr>;
# 145| 0: [MethodCall] expectsOneParamAndReceiver(...)
# 145| -1: [TypeAccess] ReflectionKt
# 145| 0: [StmtExpr] <Stmt>
# 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] <Expr>;
# 145| 0: [MemberRefExpr] ...::...
# 145| -4: [AnonymousClass] new Function2<MemberOptionalsTest,Integer,Integer>(...) { ... }
# 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<MemberOptionalsTest,Integer,Integer>
# 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<? super String,? super Integer,Integer>
# 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] <this>
# 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] <Expr>;
# 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] <Expr>;
# 153| 0: [ImplicitCoercionToUnitExpr] <implicit coercion to unit>
# 153| 0: [TypeAccess] Unit
# 153| 1: [MethodCall] expectsOneParam(...)
# 153| -1: [TypeAccess] ReflectionKt
# 153| 0: [StmtExpr] <Stmt>
# 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] <Expr>;
# 153| 0: [MemberRefExpr] ...::...
# 153| -4: [AnonymousClass] new Function1<Integer,Integer>(...) { ... }
# 153| 1: [Constructor]
#-----| 4: (Parameters)
# 153| 0: [Parameter] <extensionReceiver>
# 153| 5: [BlockStmt] { ... }
# 153| 0: [SuperConstructorInvocationStmt] super(...)
# 153| 0: [IntegerLiteral] 1
# 153| 1: [ExprStmt] <Expr>;
# 153| 0: [AssignExpr] ...=...
# 153| 0: [VarAccess] this.<extensionReceiver>
# 153| -1: [ThisAccess] this
# 153| 1: [VarAccess] <extensionReceiver>
# 153| 2: [FieldDeclaration] String <extensionReceiver>;
# 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.<extensionReceiver>
# 153| -1: [ThisAccess] this
# 153| 1: [VarAccess] a0
# 153| -3: [TypeAccess] Function1<Integer,Integer>
# 153| 0: [TypeAccess] Integer
# 153| 1: [TypeAccess] Integer
# 153| 0: [VarAccess] s
# 154| 1: [ExprStmt] <Expr>;
# 154| 0: [MethodCall] expectsOneParamAndExtension(...)
# 154| -1: [TypeAccess] ReflectionKt
# 154| 0: [StmtExpr] <Stmt>
# 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] <Expr>;
# 154| 0: [MemberRefExpr] ...::...
# 154| -4: [AnonymousClass] new Function2<String,Integer,Integer>(...) { ... }
# 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<String,Integer,Integer>
# 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<? super Integer,ConstructorOptional>
# 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] <Expr>;
# 162| 0: [ImplicitCoercionToUnitExpr] <implicit coercion to unit>
# 162| 0: [TypeAccess] Unit
# 162| 1: [MethodCall] expectsOneParamCons(...)
# 162| -1: [TypeAccess] ReflectionKt
# 162| 0: [StmtExpr] <Stmt>
# 162| 0: [BlockStmt] { ... }
# 162| 0: [LocalTypeDeclStmt] class ...
# 162| 0: [LocalClass]
# 162| 1: [Constructor]
# 162| 5: [BlockStmt] { ... }
# 162| 0: [SuperConstructorInvocationStmt] super(...)
# 162| 2: [Method] <init>
# 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] <Expr>;
# 162| 0: [MemberRefExpr] ...::...
# 162| -4: [AnonymousClass] new Function1<Integer,ConstructorOptional>(...) { ... }
# 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] <init>(...)
# 162| -1: [ClassInstanceExpr] new (...)
# 162| -3: [TypeAccess] Object
# 162| 0: [VarAccess] a0
# 162| -3: [TypeAccess] Function1<Integer,ConstructorOptional>
# 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<Ccc,Integer,Double>(...) { ... }
# 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<Ccc,Integer,Double>
# 7| 0: [TypeAccess] Ccc
# 7| 1: [TypeAccess] Integer
# 7| 2: [TypeAccess] Double
# 8| 1: [ExprStmt] <Expr>;
# 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<C,Integer>(...) { ... }
# 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<C,Integer>
# 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<C,Integer>(...) { ... }
# 14| 1: [Constructor]
#-----| 4: (Parameters)
# 14| 0: [Parameter] <dispatchReceiver>
# 14| 5: [BlockStmt] { ... }
# 14| 0: [SuperConstructorInvocationStmt] super(...)
# 14| 0: [IntegerLiteral] 1
# 14| 1: [ExprStmt] <Expr>;
# 14| 0: [AssignExpr] ...=...
# 14| 0: [VarAccess] this.<dispatchReceiver>
# 14| -1: [ThisAccess] this
# 14| 1: [VarAccess] <dispatchReceiver>
# 14| 2: [FieldDeclaration] KProperty1<C,Integer> <dispatchReceiver>;
# 14| -1: [TypeAccess] KProperty1<C,Integer>
# 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.<dispatchReceiver>
# 14| -1: [ThisAccess] this
# 14| 0: [VarAccess] a0
# 14| -3: [TypeAccess] Function1<C,Integer>
# 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<Integer>(...) { ... }
# 15| 1: [Constructor]
#-----| 4: (Parameters)
# 15| 0: [Parameter] <dispatchReceiver>
# 15| 5: [BlockStmt] { ... }
# 15| 0: [SuperConstructorInvocationStmt] super(...)
# 15| 1: [ExprStmt] <Expr>;
# 15| 0: [AssignExpr] ...=...
# 15| 0: [VarAccess] this.<dispatchReceiver>
# 15| -1: [ThisAccess] this
# 15| 1: [VarAccess] <dispatchReceiver>
# 15| 2: [FieldDeclaration] C <dispatchReceiver>;
# 15| -1: [TypeAccess] C
# 15| 3: [Method] get
# 15| 5: [BlockStmt] { ... }
# 15| 0: [ReturnStmt] return ...
# 15| 0: [MethodCall] getP0(...)
# 15| -1: [VarAccess] this.<dispatchReceiver>
# 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<Integer>
# 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<C,Integer>(...) { ... }
# 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<C,Integer>
# 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<C,Integer,Unit>(...) { ... }
# 21| 1: [Constructor]
#-----| 4: (Parameters)
# 21| 0: [Parameter] <dispatchReceiver>
# 21| 5: [BlockStmt] { ... }
# 21| 0: [SuperConstructorInvocationStmt] super(...)
# 21| 0: [IntegerLiteral] 2
# 21| 1: [ExprStmt] <Expr>;
# 21| 0: [AssignExpr] ...=...
# 21| 0: [VarAccess] this.<dispatchReceiver>
# 21| -1: [ThisAccess] this
# 21| 1: [VarAccess] <dispatchReceiver>
# 21| 2: [FieldDeclaration] KMutableProperty1<C,Integer> <dispatchReceiver>;
# 21| -1: [TypeAccess] KMutableProperty1<C,Integer>
# 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.<dispatchReceiver>
# 21| -1: [ThisAccess] this
# 21| 0: [VarAccess] a0
# 21| 1: [VarAccess] a1
# 21| -3: [TypeAccess] Function2<C,Integer,Unit>
# 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<Integer>(...) { ... }
# 22| 1: [Constructor]
#-----| 4: (Parameters)
# 22| 0: [Parameter] <dispatchReceiver>
# 22| 5: [BlockStmt] { ... }
# 22| 0: [SuperConstructorInvocationStmt] super(...)
# 22| 1: [ExprStmt] <Expr>;
# 22| 0: [AssignExpr] ...=...
# 22| 0: [VarAccess] this.<dispatchReceiver>
# 22| -1: [ThisAccess] this
# 22| 1: [VarAccess] <dispatchReceiver>
# 22| 2: [FieldDeclaration] C <dispatchReceiver>;
# 22| -1: [TypeAccess] C
# 22| 3: [Method] get
# 22| 5: [BlockStmt] { ... }
# 22| 0: [ReturnStmt] return ...
# 22| 0: [MethodCall] getP1(...)
# 22| -1: [VarAccess] this.<dispatchReceiver>
# 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.<dispatchReceiver>
# 22| -1: [ThisAccess] this
# 22| 0: [VarAccess] a0
# 22| -3: [TypeAccess] KMutableProperty0<Integer>
# 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<C,Integer,Integer>
# 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<KCallable<?>,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<KCallable<?>,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] <Expr>;
# 33| 0: [KtInitializerAssignExpr] ...=...
# 33| 0: [VarAccess] p0
# 34| 1: [ExprStmt] <Expr>;
# 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] <set-?>
# 34| 0: [TypeAccess] int
# 34| 5: [BlockStmt] { ... }
# 34| 0: [ExprStmt] <Expr>;
# 34| 0: [AssignExpr] ...=...
# 34| 0: [VarAccess] this.p1
# 34| -1: [ThisAccess] this
# 34| 1: [VarAccess] <set-?>
# 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] <this>
# 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] <this>
# 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] <Expr>;
# 60| 0: [MethodCall] println(...)
# 60| -1: [TypeAccess] ConsoleKt
# 60| 0: [MemberRefExpr] ...::...
# 60| -4: [AnonymousClass] new Function2<Generic<Integer>,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<Generic<Integer>,Integer,String>
# 60| 0: [TypeAccess] Generic<Integer>
# 60| 0: [TypeAccess] Integer
# 60| 1: [TypeAccess] Integer
# 60| 2: [TypeAccess] String
# 61| 1: [ExprStmt] <Expr>;
# 61| 0: [MethodCall] println(...)
# 61| -1: [TypeAccess] ConsoleKt
# 61| 0: [MemberRefExpr] ...::...
# 61| -4: [AnonymousClass] new Function1<Integer,String>(...) { ... }
# 61| 1: [Constructor]
#-----| 4: (Parameters)
# 61| 0: [Parameter] <dispatchReceiver>
# 61| 5: [BlockStmt] { ... }
# 61| 0: [SuperConstructorInvocationStmt] super(...)
# 61| 0: [IntegerLiteral] 1
# 61| 1: [ExprStmt] <Expr>;
# 61| 0: [AssignExpr] ...=...
# 61| 0: [VarAccess] this.<dispatchReceiver>
# 61| -1: [ThisAccess] this
# 61| 1: [VarAccess] <dispatchReceiver>
# 61| 2: [FieldDeclaration] Generic<Integer> <dispatchReceiver>;
# 61| -1: [TypeAccess] Generic<Integer>
# 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.<dispatchReceiver>
# 61| -1: [ThisAccess] this
# 61| 0: [VarAccess] a0
# 61| -3: [TypeAccess] Function1<Integer,String>
# 61| 0: [TypeAccess] Integer
# 61| 1: [TypeAccess] String
# 61| 0: [ClassInstanceExpr] new Generic<Integer>(...)
# 61| -3: [TypeAccess] Generic<Integer>
# 61| 0: [TypeAccess] Integer
# 62| 2: [ExprStmt] <Expr>;
# 62| 0: [MethodCall] println(...)
# 62| -1: [TypeAccess] ConsoleKt
# 62| 0: [MemberRefExpr] ...::...
# 62| -4: [AnonymousClass] new Function1<Generic<Integer>,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<Generic<Integer>,String>
# 62| 0: [TypeAccess] Generic<Integer>
# 62| 0: [TypeAccess] Integer
# 62| 1: [TypeAccess] String
# 63| 3: [ExprStmt] <Expr>;
# 63| 0: [MethodCall] println(...)
# 63| -1: [TypeAccess] ConsoleKt
# 63| 0: [MemberRefExpr] ...::...
# 63| -4: [AnonymousClass] new Function0<String>(...) { ... }
# 63| 1: [Constructor]
#-----| 4: (Parameters)
# 63| 0: [Parameter] <extensionReceiver>
# 63| 5: [BlockStmt] { ... }
# 63| 0: [SuperConstructorInvocationStmt] super(...)
# 63| 0: [IntegerLiteral] 0
# 63| 1: [ExprStmt] <Expr>;
# 63| 0: [AssignExpr] ...=...
# 63| 0: [VarAccess] this.<extensionReceiver>
# 63| -1: [ThisAccess] this
# 63| 1: [VarAccess] <extensionReceiver>
# 63| 2: [FieldDeclaration] Generic<Integer> <extensionReceiver>;
# 63| -1: [TypeAccess] Generic<Integer>
# 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.<extensionReceiver>
# 63| -1: [ThisAccess] this
# 63| -3: [TypeAccess] Function0<String>
# 63| 0: [TypeAccess] String
# 63| 0: [ClassInstanceExpr] new Generic<Integer>(...)
# 63| -3: [TypeAccess] Generic<Integer>
# 63| 0: [TypeAccess] Integer
# 64| 4: [ExprStmt] <Expr>;
# 64| 0: [MethodCall] println(...)
# 64| -1: [TypeAccess] ConsoleKt
# 64| 0: [MemberRefExpr] ...::...
# 64| -4: [AnonymousClass] new Function1<Generic<Integer>,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<Generic<Integer>,String>
# 64| 0: [TypeAccess] Generic<Integer>
# 64| 0: [TypeAccess] Integer
# 64| 1: [TypeAccess] String
# 65| 5: [ExprStmt] <Expr>;
# 65| 0: [MethodCall] println(...)
# 65| -1: [TypeAccess] ConsoleKt
# 65| 0: [MemberRefExpr] ...::...
# 65| -4: [AnonymousClass] new Function0<String>(...) { ... }
# 65| 1: [Constructor]
#-----| 4: (Parameters)
# 65| 0: [Parameter] <extensionReceiver>
# 65| 5: [BlockStmt] { ... }
# 65| 0: [SuperConstructorInvocationStmt] super(...)
# 65| 0: [IntegerLiteral] 0
# 65| 1: [ExprStmt] <Expr>;
# 65| 0: [AssignExpr] ...=...
# 65| 0: [VarAccess] this.<extensionReceiver>
# 65| -1: [ThisAccess] this
# 65| 1: [VarAccess] <extensionReceiver>
# 65| 2: [FieldDeclaration] Generic<Integer> <extensionReceiver>;
# 65| -1: [TypeAccess] Generic<Integer>
# 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.<extensionReceiver>
# 65| -1: [ThisAccess] this
# 65| -3: [TypeAccess] Function0<String>
# 65| 0: [TypeAccess] String
# 65| 0: [ClassInstanceExpr] new Generic<Integer>(...)
# 65| -3: [TypeAccess] Generic<Integer>
# 65| 0: [TypeAccess] Integer
# 67| 6: [ExprStmt] <Expr>;
# 67| 0: [MethodCall] println(...)
# 67| -1: [TypeAccess] ConsoleKt
# 67| 0: [PropertyRefExpr] ...::...
# 67| -4: [AnonymousClass] new KMutableProperty1<Generic<Integer>,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<Generic<Integer>,Integer>
# 67| 0: [TypeAccess] Generic<Integer>
# 67| 0: [TypeAccess] Integer
# 67| 1: [TypeAccess] Integer
# 68| 7: [ExprStmt] <Expr>;
# 68| 0: [MethodCall] println(...)
# 68| -1: [TypeAccess] ConsoleKt
# 68| 0: [PropertyRefExpr] ...::...
# 68| -4: [AnonymousClass] new KMutableProperty0<Integer>(...) { ... }
# 68| 1: [Constructor]
#-----| 4: (Parameters)
# 68| 0: [Parameter] <dispatchReceiver>
# 68| 5: [BlockStmt] { ... }
# 68| 0: [SuperConstructorInvocationStmt] super(...)
# 68| 1: [ExprStmt] <Expr>;
# 68| 0: [AssignExpr] ...=...
# 68| 0: [VarAccess] this.<dispatchReceiver>
# 68| -1: [ThisAccess] this
# 68| 1: [VarAccess] <dispatchReceiver>
# 68| 2: [FieldDeclaration] Generic<Integer> <dispatchReceiver>;
# 68| -1: [TypeAccess] Generic<Integer>
# 68| 0: [TypeAccess] Integer
# 68| 3: [Method] get
# 68| 5: [BlockStmt] { ... }
# 68| 0: [ReturnStmt] return ...
# 68| 0: [MethodCall] getP2(...)
# 68| -1: [VarAccess] this.<dispatchReceiver>
# 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.<dispatchReceiver>
# 68| -1: [ThisAccess] this
# 68| 0: [VarAccess] a0
# 68| -3: [TypeAccess] KMutableProperty0<Integer>
# 68| 0: [TypeAccess] Integer
# 68| 0: [ClassInstanceExpr] new Generic<Integer>(...)
# 68| -3: [TypeAccess] Generic<Integer>
# 68| 0: [TypeAccess] Integer
# 70| 8: [ExprStmt] <Expr>;
# 70| 0: [MethodCall] println(...)
# 70| -1: [TypeAccess] ConsoleKt
# 70| 0: [PropertyRefExpr] ...::...
# 70| -4: [AnonymousClass] new KProperty0<Integer>(...) { ... }
# 70| 1: [Constructor]
#-----| 4: (Parameters)
# 70| 0: [Parameter] <dispatchReceiver>
# 70| 5: [BlockStmt] { ... }
# 70| 0: [SuperConstructorInvocationStmt] super(...)
# 70| 1: [ExprStmt] <Expr>;
# 70| 0: [AssignExpr] ...=...
# 70| 0: [VarAccess] this.<dispatchReceiver>
# 70| -1: [ThisAccess] this
# 70| 1: [VarAccess] <dispatchReceiver>
# 70| 2: [FieldDeclaration] IntCompanionObject <dispatchReceiver>;
# 70| -1: [TypeAccess] IntCompanionObject
# 70| 3: [Method] get
# 70| 5: [BlockStmt] { ... }
# 70| 0: [ReturnStmt] return ...
# 70| 0: [MethodCall] getMAX_VALUE(...)
# 70| -1: [VarAccess] this.<dispatchReceiver>
# 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<Integer>
# 70| 0: [TypeAccess] Integer
# 70| 0: [VarAccess] Companion
# 71| 9: [ExprStmt] <Expr>;
# 71| 0: [MethodCall] println(...)
# 71| -1: [TypeAccess] ConsoleKt
# 71| 0: [PropertyRefExpr] ...::...
# 71| -4: [AnonymousClass] new KProperty0<Integer>(...) { ... }
# 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<Integer>
# 71| 0: [TypeAccess] Integer
# 72| 10: [ExprStmt] <Expr>;
# 72| 0: [MethodCall] println(...)
# 72| -1: [TypeAccess] ConsoleKt
# 72| 0: [PropertyRefExpr] ...::...
# 72| -4: [AnonymousClass] new KMutableProperty0<Integer>(...) { ... }
# 72| 1: [Constructor]
#-----| 4: (Parameters)
# 72| 0: [Parameter] <dispatchReceiver>
# 72| 5: [BlockStmt] { ... }
# 72| 0: [SuperConstructorInvocationStmt] super(...)
# 72| 1: [ExprStmt] <Expr>;
# 72| 0: [AssignExpr] ...=...
# 72| 0: [VarAccess] this.<dispatchReceiver>
# 72| -1: [ThisAccess] this
# 72| 1: [VarAccess] <dispatchReceiver>
# 72| 2: [FieldDeclaration] Rectangle <dispatchReceiver>;
# 72| -1: [TypeAccess] Rectangle
# 72| 3: [Method] get
# 72| 5: [BlockStmt] { ... }
# 72| 0: [ReturnStmt] return ...
# 72| 0: [VarAccess] this.<dispatchReceiver>.height
# 72| -1: [VarAccess] this.<dispatchReceiver>
# 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] <Expr>;
# 72| 0: [AssignExpr] ...=...
# 72| 0: [VarAccess] this.<dispatchReceiver>.height
# 72| -1: [VarAccess] this.<dispatchReceiver>
# 72| -1: [ThisAccess] this
# 72| 1: [VarAccess] a0
# 72| -3: [TypeAccess] KMutableProperty0<Integer>
# 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] <Expr>;
# 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] <Expr>;
# 90| 0: [MethodCall] fn11(...)
# 90| -3: [TypeAccess] Inner<String>
# 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<String,Inner<String>>(...) { ... }
# 90| 1: [Constructor]
#-----| 4: (Parameters)
# 90| 0: [Parameter] <dispatchReceiver>
# 90| 5: [BlockStmt] { ... }
# 90| 0: [SuperConstructorInvocationStmt] super(...)
# 90| 0: [IntegerLiteral] 1
# 90| 1: [ExprStmt] <Expr>;
# 90| 0: [AssignExpr] ...=...
# 90| 0: [VarAccess] this.<dispatchReceiver>
# 90| -1: [ThisAccess] this
# 90| 1: [VarAccess] <dispatchReceiver>
# 90| 2: [FieldDeclaration] Class2 <dispatchReceiver>;
# 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<String>(...)
# 90| -3: [TypeAccess] Inner<String>
# 90| 0: [TypeAccess] String
# 90| -2: [VarAccess] this.<dispatchReceiver>
# 90| -1: [ThisAccess] this
# 90| 0: [VarAccess] a0
# 90| -3: [TypeAccess] Function1<String,Inner<String>>
# 90| 0: [TypeAccess] String
# 90| 1: [TypeAccess] Inner<String>
# 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] <Expr>;
# 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] <set-?>
# 105| 0: [TypeAccess] int
# 105| 5: [BlockStmt] { ... }
# 105| 0: [ExprStmt] <Expr>;
# 105| 0: [AssignExpr] ...=...
# 105| 0: [VarAccess] this.prop1
# 105| -1: [ThisAccess] this
# 105| 1: [VarAccess] <set-?>
# 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] <Expr>;
# 109| 0: [MethodCall] println(...)
# 109| -1: [TypeAccess] ConsoleKt
# 109| 0: [PropertyRefExpr] ...::...
# 109| -4: [AnonymousClass] new KMutableProperty0<Integer>(...) { ... }
# 109| 1: [Constructor]
#-----| 4: (Parameters)
# 109| 0: [Parameter] <dispatchReceiver>
# 109| 5: [BlockStmt] { ... }
# 109| 0: [SuperConstructorInvocationStmt] super(...)
# 109| 1: [ExprStmt] <Expr>;
# 109| 0: [AssignExpr] ...=...
# 109| 0: [VarAccess] this.<dispatchReceiver>
# 109| -1: [ThisAccess] this
# 109| 1: [VarAccess] <dispatchReceiver>
# 109| 2: [FieldDeclaration] Derived1 <dispatchReceiver>;
# 109| -1: [TypeAccess] Derived1
# 109| 3: [Method] get
# 109| 5: [BlockStmt] { ... }
# 109| 0: [ReturnStmt] return ...
# 109| 0: [MethodCall] getProp1(...)
# 109| -1: [VarAccess] this.<dispatchReceiver>
# 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.<dispatchReceiver>
# 109| -1: [ThisAccess] this
# 109| 0: [VarAccess] a0
# 109| -3: [TypeAccess] KMutableProperty0<Integer>
# 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<Integer,Unit>(...) { ... }
# 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<Integer,Unit>
# 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] <Expr>;
# 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] <Expr>;
# 157| 0: [AssignExpr] ...=...
# 157| 0: [VarAccess] p1
# 157| 1: [IntegerLiteral] 0
# 157| 1: [ThisConstructorInvocationStmt] this(...)
# 157| 0: [VarAccess] p0
# 157| 1: [VarAccess] p1