Files
codeql/java/ql/test/kotlin/library-tests/reflection/PrintAst.expected
2022-05-12 22:36:27 +01:00

1220 lines
60 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: [MethodAccess] get(...)
# 47| -1: [ExtensionReceiverAccess] this
# 47| 0: [SubExpr] ... - ...
# 47| 0: [MethodAccess] 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: [MethodAccess] println(...)
# 50| -1: [TypeAccess] ConsoleKt
# 50| 0: [MethodAccess] get(...)
# 50| -1: [PropertyRefExpr] ...::...
# 50| -4: [AnonymousClass] new KProperty1<String,Character>(...) { ... }
# 50| 1: [Constructor]
# 50| 5: [BlockStmt] { ... }
# 50| 0: [SuperConstructorInvocationStmt] super(...)
# 50| 1: [Method] get
#-----| 4: (Parameters)
# 50| 0: [Parameter] a0
# 50| 5: [BlockStmt] { ... }
# 50| 0: [ReturnStmt] return ...
# 50| 0: [MethodAccess] getLastChar(...)
# 50| -1: [TypeAccess] ReflectionKt
# 50| 0: [VarAccess] a0
# 50| 1: [Method] invoke
#-----| 4: (Parameters)
# 50| 0: [Parameter] a0
# 50| 5: [BlockStmt] { ... }
# 50| 0: [ReturnStmt] return ...
# 50| 0: [MethodAccess] 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: [MethodAccess] println(...)
# 51| -1: [TypeAccess] ConsoleKt
# 51| 0: [MethodAccess] 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| 1: [FieldDeclaration] String <extensionReceiver>;
# 51| -1: [TypeAccess] String
# 51| 1: [Method] get
# 51| 5: [BlockStmt] { ... }
# 51| 0: [ReturnStmt] return ...
# 51| 0: [MethodAccess] getLastChar(...)
# 51| -1: [TypeAccess] ReflectionKt
# 51| 0: [VarAccess] this.<extensionReceiver>
# 51| -1: [ThisAccess] this
# 51| 1: [Method] invoke
# 51| 5: [BlockStmt] { ... }
# 51| 0: [ReturnStmt] return ...
# 51| 0: [MethodAccess] 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: [MethodAccess] 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: [MethodAccess] 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: [MethodAccess] 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| 1: [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: [MethodAccess] 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| 1: [Method] invoke
#-----| 4: (Parameters)
# 98| 0: [Parameter] a0
# 98| 5: [BlockStmt] { ... }
# 98| 0: [ReturnStmt] return ...
# 98| 0: [MethodAccess] 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: [MethodAccess] 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| 1: [ExprStmt] <Expr>;
# 99| 0: [AssignExpr] ...=...
# 99| 0: [VarAccess] this.<dispatchReceiver>
# 99| -1: [ThisAccess] this
# 99| 1: [VarAccess] <dispatchReceiver>
# 99| 1: [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| 1: [FieldDeclaration] Class2<Integer> <dispatchReceiver>;
# 99| -1: [TypeAccess] Class2<Integer>
# 99| 0: [TypeAccess] Integer
# 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<T,R>
# 102| 0: [TypeAccess] T
# 102| 1: [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<T1,R>
# 103| 0: [TypeAccess] T1
# 103| 1: [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: [MethodAccess] invoke(...)
# 123| -1: [VarAccess] f
# 125| 11: [Method] adapted
# 125| 3: [TypeAccess] Unit
# 125| 5: [BlockStmt] { ... }
# 126| 0: [ExprStmt] <Expr>;
# 126| 0: [MethodAccess] 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| 1: [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: [MethodAccess] 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| 1: [Method] invoke
# 126| 5: [BlockStmt] { ... }
# 126| 0: [ReturnStmt] return ...
# 126| 0: [MethodAccess] fn1(...)
# 126| -1: [TypeAccess] ReflectionKt
# 126| -3: [TypeAccess] Function0<Unit>
# 126| 0: [TypeAccess] Unit
# 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| 1: [Method] invoke
#-----| 4: (Parameters)
# 7| 0: [Parameter] a0
# 7| 1: [Parameter] a1
# 7| 5: [BlockStmt] { ... }
# 7| 0: [ReturnStmt] return ...
# 7| 0: [MethodAccess] 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: [MethodAccess] println(...)
# 8| -1: [TypeAccess] ConsoleKt
# 8| 0: [MethodAccess] 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| 1: [Method] get
#-----| 4: (Parameters)
# 10| 0: [Parameter] a0
# 10| 5: [BlockStmt] { ... }
# 10| 0: [ReturnStmt] return ...
# 10| 0: [MethodAccess] getP0(...)
# 10| -1: [VarAccess] a0
# 10| 1: [Method] invoke
#-----| 4: (Parameters)
# 10| 0: [Parameter] a0
# 10| 5: [BlockStmt] { ... }
# 10| 0: [ReturnStmt] return ...
# 10| 0: [MethodAccess] 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: [MethodAccess] get(...)
# 11| -1: [VarAccess] x0
# 11| 0: [ClassInstanceExpr] new C(...)
# 11| -3: [TypeAccess] C
# 12| 4: [LocalVariableDeclStmt] var ...;
# 12| 1: [LocalVariableDeclExpr] x2
# 12| 0: [MethodAccess] getName(...)
# 12| -1: [VarAccess] x0
# 13| 5: [LocalVariableDeclStmt] var ...;
# 13| 1: [LocalVariableDeclExpr] x3
# 13| 0: [MethodAccess] 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| 1: [ExprStmt] <Expr>;
# 14| 0: [AssignExpr] ...=...
# 14| 0: [VarAccess] this.<dispatchReceiver>
# 14| -1: [ThisAccess] this
# 14| 1: [VarAccess] <dispatchReceiver>
# 14| 1: [Method] invoke
#-----| 4: (Parameters)
# 14| 0: [Parameter] a0
# 14| 5: [BlockStmt] { ... }
# 14| 0: [ReturnStmt] return ...
# 14| 0: [MethodAccess] get(...)
# 14| -1: [VarAccess] this.<dispatchReceiver>
# 14| -1: [ThisAccess] this
# 14| 0: [VarAccess] a0
# 14| 1: [FieldDeclaration] KProperty1<C,Integer> <dispatchReceiver>;
# 14| -1: [TypeAccess] KProperty1<C,Integer>
# 14| 0: [TypeAccess] C
# 14| 1: [TypeAccess] Integer
# 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| 1: [FieldDeclaration] C <dispatchReceiver>;
# 15| -1: [TypeAccess] C
# 15| 1: [Method] get
# 15| 5: [BlockStmt] { ... }
# 15| 0: [ReturnStmt] return ...
# 15| 0: [MethodAccess] getP0(...)
# 15| -1: [VarAccess] this.<dispatchReceiver>
# 15| -1: [ThisAccess] this
# 15| 1: [Method] invoke
# 15| 5: [BlockStmt] { ... }
# 15| 0: [ReturnStmt] return ...
# 15| 0: [MethodAccess] 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| 1: [Method] get
#-----| 4: (Parameters)
# 17| 0: [Parameter] a0
# 17| 5: [BlockStmt] { ... }
# 17| 0: [ReturnStmt] return ...
# 17| 0: [MethodAccess] getP1(...)
# 17| -1: [VarAccess] a0
# 17| 1: [Method] invoke
#-----| 4: (Parameters)
# 17| 0: [Parameter] a0
# 17| 5: [BlockStmt] { ... }
# 17| 0: [ReturnStmt] return ...
# 17| 0: [MethodAccess] get(...)
# 17| -1: [ThisAccess] this
# 17| 0: [VarAccess] a0
# 17| 1: [Method] set
#-----| 4: (Parameters)
# 17| 0: [Parameter] a0
# 17| 1: [Parameter] a1
# 17| 5: [BlockStmt] { ... }
# 17| 0: [ReturnStmt] return ...
# 17| 0: [MethodAccess] 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: [MethodAccess] 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: [MethodAccess] getName(...)
# 19| -1: [VarAccess] y0
# 20| 11: [LocalVariableDeclStmt] var ...;
# 20| 1: [LocalVariableDeclExpr] y3
# 20| 0: [MethodAccess] 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| 1: [ExprStmt] <Expr>;
# 21| 0: [AssignExpr] ...=...
# 21| 0: [VarAccess] this.<dispatchReceiver>
# 21| -1: [ThisAccess] this
# 21| 1: [VarAccess] <dispatchReceiver>
# 21| 1: [Method] invoke
#-----| 4: (Parameters)
# 21| 0: [Parameter] a0
# 21| 1: [Parameter] a1
# 21| 5: [BlockStmt] { ... }
# 21| 0: [ReturnStmt] return ...
# 21| 0: [MethodAccess] set(...)
# 21| -1: [VarAccess] this.<dispatchReceiver>
# 21| -1: [ThisAccess] this
# 21| 0: [VarAccess] a0
# 21| 1: [VarAccess] a1
# 21| 1: [FieldDeclaration] KMutableProperty1<C,Integer> <dispatchReceiver>;
# 21| -1: [TypeAccess] KMutableProperty1<C,Integer>
# 21| 0: [TypeAccess] C
# 21| 1: [TypeAccess] Integer
# 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| 1: [FieldDeclaration] C <dispatchReceiver>;
# 22| -1: [TypeAccess] C
# 22| 1: [Method] get
# 22| 5: [BlockStmt] { ... }
# 22| 0: [ReturnStmt] return ...
# 22| 0: [MethodAccess] getP1(...)
# 22| -1: [VarAccess] this.<dispatchReceiver>
# 22| -1: [ThisAccess] this
# 22| 1: [Method] invoke
# 22| 5: [BlockStmt] { ... }
# 22| 0: [ReturnStmt] return ...
# 22| 0: [MethodAccess] get(...)
# 22| -1: [ThisAccess] this
# 22| 1: [Method] set
#-----| 4: (Parameters)
# 22| 0: [Parameter] a0
# 22| 5: [BlockStmt] { ... }
# 22| 0: [ReturnStmt] return ...
# 22| 0: [MethodAccess] 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: [MethodAccess] single(...)
# 24| -2: [TypeAccess] KCallable<?>
# 24| -1: [TypeAccess] CollectionsKt
# 24| 0: [MethodAccess] 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| 1: [Method] invoke
# 24| 3: [TypeAccess] boolean
#-----| 4: (Parameters)
# 24| 0: [Parameter] it
# 24| 0: [TypeAccess] KCallable<?>
# 24| 5: [BlockStmt] { ... }
# 24| 0: [ReturnStmt] return ...
# 24| 0: [ValueEQExpr] ... (value equals) ...
# 24| 0: [MethodAccess] 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: [MethodAccess] 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| 2: [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| 4: [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-?>
# 34| 4: [FieldDeclaration] int p1;
# 34| -1: [TypeAccess] int
# 34| 0: [IntegerLiteral] 2
# 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: [MethodAccess] 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| 1: [Method] invoke
#-----| 4: (Parameters)
# 60| 0: [Parameter] a0
# 60| 1: [Parameter] a1
# 60| 5: [BlockStmt] { ... }
# 60| 0: [ReturnStmt] return ...
# 60| 0: [MethodAccess] 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: [MethodAccess] 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| 1: [ExprStmt] <Expr>;
# 61| 0: [AssignExpr] ...=...
# 61| 0: [VarAccess] this.<dispatchReceiver>
# 61| -1: [ThisAccess] this
# 61| 1: [VarAccess] <dispatchReceiver>
# 61| 1: [Method] invoke
#-----| 4: (Parameters)
# 61| 0: [Parameter] a0
# 61| 5: [BlockStmt] { ... }
# 61| 0: [ReturnStmt] return ...
# 61| 0: [MethodAccess] m1(...)
# 61| -1: [VarAccess] this.<dispatchReceiver>
# 61| -1: [ThisAccess] this
# 61| 0: [VarAccess] a0
# 61| 1: [FieldDeclaration] Generic<Integer> <dispatchReceiver>;
# 61| -1: [TypeAccess] Generic<Integer>
# 61| 0: [TypeAccess] Integer
# 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: [MethodAccess] 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| 1: [Method] invoke
#-----| 4: (Parameters)
# 62| 0: [Parameter] a0
# 62| 5: [BlockStmt] { ... }
# 62| 0: [ReturnStmt] return ...
# 62| 0: [MethodAccess] 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: [MethodAccess] 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| 1: [ExprStmt] <Expr>;
# 63| 0: [AssignExpr] ...=...
# 63| 0: [VarAccess] this.<extensionReceiver>
# 63| -1: [ThisAccess] this
# 63| 1: [VarAccess] <extensionReceiver>
# 63| 1: [Method] invoke
# 63| 5: [BlockStmt] { ... }
# 63| 0: [ReturnStmt] return ...
# 63| 0: [MethodAccess] ext1(...)
# 63| -2: [TypeAccess] Integer
# 63| -1: [TypeAccess] ReflectionKt
# 63| 0: [VarAccess] this.<extensionReceiver>
# 63| -1: [ThisAccess] this
# 63| 1: [FieldDeclaration] Generic<Integer> <extensionReceiver>;
# 63| -1: [TypeAccess] Generic<Integer>
# 63| 0: [TypeAccess] Integer
# 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: [MethodAccess] 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| 1: [Method] invoke
#-----| 4: (Parameters)
# 64| 0: [Parameter] a0
# 64| 5: [BlockStmt] { ... }
# 64| 0: [ReturnStmt] return ...
# 64| 0: [MethodAccess] 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: [MethodAccess] 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| 1: [ExprStmt] <Expr>;
# 65| 0: [AssignExpr] ...=...
# 65| 0: [VarAccess] this.<extensionReceiver>
# 65| -1: [ThisAccess] this
# 65| 1: [VarAccess] <extensionReceiver>
# 65| 1: [Method] invoke
# 65| 5: [BlockStmt] { ... }
# 65| 0: [ReturnStmt] return ...
# 65| 0: [MethodAccess] ext2(...)
# 65| -1: [TypeAccess] ReflectionKt
# 65| 0: [VarAccess] this.<extensionReceiver>
# 65| -1: [ThisAccess] this
# 65| 1: [FieldDeclaration] Generic<Integer> <extensionReceiver>;
# 65| -1: [TypeAccess] Generic<Integer>
# 65| 0: [TypeAccess] Integer
# 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: [MethodAccess] 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| 1: [Method] get
#-----| 4: (Parameters)
# 67| 0: [Parameter] a0
# 67| 5: [BlockStmt] { ... }
# 67| 0: [ReturnStmt] return ...
# 67| 0: [MethodAccess] getP2(...)
# 67| -1: [VarAccess] a0
# 67| 1: [Method] invoke
#-----| 4: (Parameters)
# 67| 0: [Parameter] a0
# 67| 5: [BlockStmt] { ... }
# 67| 0: [ReturnStmt] return ...
# 67| 0: [MethodAccess] get(...)
# 67| -1: [ThisAccess] this
# 67| 0: [VarAccess] a0
# 67| 1: [Method] set
#-----| 4: (Parameters)
# 67| 0: [Parameter] a0
# 67| 1: [Parameter] a1
# 67| 5: [BlockStmt] { ... }
# 67| 0: [ReturnStmt] return ...
# 67| 0: [MethodAccess] 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: [MethodAccess] 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| 1: [FieldDeclaration] Generic<Integer> <dispatchReceiver>;
# 68| -1: [TypeAccess] Generic<Integer>
# 68| 0: [TypeAccess] Integer
# 68| 1: [Method] get
# 68| 5: [BlockStmt] { ... }
# 68| 0: [ReturnStmt] return ...
# 68| 0: [MethodAccess] getP2(...)
# 68| -1: [VarAccess] this.<dispatchReceiver>
# 68| -1: [ThisAccess] this
# 68| 1: [Method] invoke
# 68| 5: [BlockStmt] { ... }
# 68| 0: [ReturnStmt] return ...
# 68| 0: [MethodAccess] get(...)
# 68| -1: [ThisAccess] this
# 68| 1: [Method] set
#-----| 4: (Parameters)
# 68| 0: [Parameter] a0
# 68| 5: [BlockStmt] { ... }
# 68| 0: [ReturnStmt] return ...
# 68| 0: [MethodAccess] 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: [MethodAccess] 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| 1: [FieldDeclaration] IntCompanionObject <dispatchReceiver>;
# 70| -1: [TypeAccess] IntCompanionObject
# 70| 1: [Method] get
# 70| 5: [BlockStmt] { ... }
# 70| 0: [ReturnStmt] return ...
# 70| 0: [MethodAccess] getMAX_VALUE(...)
# 70| -1: [VarAccess] this.<dispatchReceiver>
# 70| -1: [ThisAccess] this
# 70| 1: [Method] invoke
# 70| 5: [BlockStmt] { ... }
# 70| 0: [ReturnStmt] return ...
# 70| 0: [MethodAccess] get(...)
# 70| -1: [ThisAccess] this
# 70| -3: [TypeAccess] KProperty0<Integer>
# 70| 0: [TypeAccess] Integer
# 70| 0: [VarAccess] Companion
# 71| 9: [ExprStmt] <Expr>;
# 71| 0: [MethodAccess] 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| 1: [Method] get
# 71| 5: [BlockStmt] { ... }
# 71| 0: [ReturnStmt] return ...
# 71| 0: [VarAccess] MAX_VALUE
# 71| 1: [Method] invoke
# 71| 5: [BlockStmt] { ... }
# 71| 0: [ReturnStmt] return ...
# 71| 0: [MethodAccess] get(...)
# 71| -1: [ThisAccess] this
# 71| -3: [TypeAccess] KProperty0<Integer>
# 71| 0: [TypeAccess] Integer
# 72| 10: [ExprStmt] <Expr>;
# 72| 0: [MethodAccess] 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| 1: [FieldDeclaration] Rectangle <dispatchReceiver>;
# 72| -1: [TypeAccess] Rectangle
# 72| 1: [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| 1: [Method] invoke
# 72| 5: [BlockStmt] { ... }
# 72| 0: [ReturnStmt] return ...
# 72| 0: [MethodAccess] get(...)
# 72| -1: [ThisAccess] this
# 72| 1: [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: [MethodAccess] 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: [Method] getValue
# 83| 3: [TypeAccess] T
# 83| 5: [BlockStmt] { ... }
# 83| 0: [ReturnStmt] return ...
# 83| 0: [VarAccess] this.value
# 83| -1: [ThisAccess] this
# 83| 4: [FieldDeclaration] T value;
# 83| -1: [TypeAccess] T
# 83| 0: [VarAccess] value
# 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: [MethodAccess] 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| 1: [ExprStmt] <Expr>;
# 90| 0: [AssignExpr] ...=...
# 90| 0: [VarAccess] this.<dispatchReceiver>
# 90| -1: [ThisAccess] this
# 90| 1: [VarAccess] <dispatchReceiver>
# 90| 1: [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| 1: [FieldDeclaration] Class2 <dispatchReceiver>;
# 90| -1: [TypeAccess] Class2
# 90| 0: [TypeAccess] T
# 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| 2: [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-?>
# 105| 2: [FieldDeclaration] int prop1;
# 105| -1: [TypeAccess] int
# 105| 0: [VarAccess] prop1
# 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: [MethodAccess] 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| 1: [FieldDeclaration] Derived1 <dispatchReceiver>;
# 109| -1: [TypeAccess] Derived1
# 109| 1: [Method] get
# 109| 5: [BlockStmt] { ... }
# 109| 0: [ReturnStmt] return ...
# 109| 0: [MethodAccess] getProp1(...)
# 109| -1: [VarAccess] this.<dispatchReceiver>
# 109| -1: [ThisAccess] this
# 109| 1: [Method] invoke
# 109| 5: [BlockStmt] { ... }
# 109| 0: [ReturnStmt] return ...
# 109| 0: [MethodAccess] get(...)
# 109| -1: [ThisAccess] this
# 109| 1: [Method] set
#-----| 4: (Parameters)
# 109| 0: [Parameter] a0
# 109| 5: [BlockStmt] { ... }
# 109| 0: [ReturnStmt] return ...
# 109| 0: [MethodAccess] 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| 1: [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| 1: [Method] invoke
#-----| 4: (Parameters)
# 116| 0: [Parameter] a0
# 116| 5: [BlockStmt] { ... }
# 116| 0: [ReturnStmt] return ...
# 116| 0: [MethodAccess] 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