generics.kt: # 0| [CompilationUnit] generics # 0| 1: [Class] GenericsKt # 3| 1: [ExtensionMethod] f0 #-----| 2: (Generic Parameters) # 3| 0: [TypeVariable] S # 3| 3: [TypeAccess] S #-----| 4: (Parameters) # 3| 0: [Parameter] # 3| 0: [TypeAccess] int # 3| 1: [Parameter] s # 3| 0: [TypeAccess] S # 3| 5: [BlockStmt] { ... } # 4| 0: [ReturnStmt] return ... # 4| 0: [VarAccess] s # 7| 2: [ExtensionMethod] f1 #-----| 2: (Generic Parameters) # 7| 0: [TypeVariable] S # 7| 3: [TypeAccess] C0 # 7| 0: [TypeAccess] S #-----| 4: (Parameters) # 7| 0: [Parameter] # 7| 0: [TypeAccess] int # 7| 1: [Parameter] s # 7| 0: [TypeAccess] S # 7| 5: [BlockStmt] { ... } # 8| 0: [ReturnStmt] return ... # 8| 0: [NullLiteral] null # 24| 3: [Method] m # 24| 3: [TypeAccess] Unit # 24| 5: [BlockStmt] { ... } # 25| 0: [LocalVariableDeclStmt] var ...; # 25| 1: [LocalVariableDeclExpr] c1 # 25| 0: [ClassInstanceExpr] new C1(...) # 25| -3: [TypeAccess] C1 # 25| 0: [TypeAccess] Integer # 25| 1: [TypeAccess] Integer # 25| 0: [IntegerLiteral] 1 # 26| 1: [ExprStmt] ; # 26| 0: [MethodCall] f1(...) # 26| -1: [VarAccess] c1 # 26| 0: [IntegerLiteral] 2 # 27| 2: [LocalVariableDeclStmt] var ...; # 27| 1: [LocalVariableDeclExpr] x1 # 27| 0: [MethodCall] f2(...) # 27| -2: [TypeAccess] String # 27| -1: [VarAccess] c1 # 27| 0: [StringLiteral] "" # 28| 3: [LocalVariableDeclStmt] var ...; # 28| 1: [LocalVariableDeclExpr] c2 # 28| 0: [ClassInstanceExpr] new C1(...) # 28| -3: [TypeAccess] C1 # 28| 0: [TypeAccess] String # 28| 1: [TypeAccess] Integer # 28| 0: [StringLiteral] "" # 29| 4: [ExprStmt] ; # 29| 0: [MethodCall] f1(...) # 29| -1: [VarAccess] c2 # 29| 0: [StringLiteral] "a" # 30| 5: [LocalVariableDeclStmt] var ...; # 30| 1: [LocalVariableDeclExpr] x2 # 30| 0: [MethodCall] f2(...) # 30| -2: [TypeAccess] Integer # 30| -1: [VarAccess] c2 # 30| 0: [IntegerLiteral] 3 # 31| 6: [LocalVariableDeclStmt] var ...; # 31| 1: [LocalVariableDeclExpr] c3 # 31| 0: [ClassInstanceExpr] new C2(...) # 31| -3: [TypeAccess] C2 # 32| 7: [ExprStmt] ; # 32| 0: [MethodCall] f4(...) # 32| -2: [TypeAccess] Integer # 32| -1: [VarAccess] c3 # 32| 0: [IntegerLiteral] 5 # 33| 8: [LocalVariableDeclStmt] var ...; # 33| 1: [LocalVariableDeclExpr] c4 # 33| 0: [ClassInstanceExpr] new C0(...) # 33| -3: [TypeAccess] C0 # 33| 0: [TypeAccess] Integer # 11| 2: [Class,GenericType,ParameterizedType] C0 #-----| -2: (Generic Parameters) # 11| 0: [TypeVariable] V # 11| 1: [Constructor] C0 # 11| 5: [BlockStmt] { ... } # 11| 0: [SuperConstructorInvocationStmt] super(...) # 11| 1: [BlockStmt] { ... } # 13| 4: [Class,GenericType,ParameterizedType] C1 #-----| -2: (Generic Parameters) # 13| 0: [TypeVariable] T # 13| 1: [TypeVariable] W # 13| 1: [Constructor] C1 #-----| 4: (Parameters) # 13| 0: [Parameter] t # 13| 0: [TypeAccess] T # 13| 5: [BlockStmt] { ... } # 13| 0: [SuperConstructorInvocationStmt] super(...) # 13| 1: [BlockStmt] { ... } # 13| 0: [ExprStmt] ; # 13| 0: [KtInitializerAssignExpr] ...=... # 13| 0: [VarAccess] t # 13| 2: [FieldDeclaration] T t; # 13| -1: [TypeAccess] T # 13| 0: [VarAccess] t # 13| 3: [Method] getT # 13| 3: [TypeAccess] T # 13| 5: [BlockStmt] { ... } # 13| 0: [ReturnStmt] return ... # 13| 0: [VarAccess] this.t # 13| -1: [ThisAccess] this # 14| 4: [Method] f1 # 14| 3: [TypeAccess] Unit #-----| 4: (Parameters) # 14| 0: [Parameter] t # 14| 0: [TypeAccess] T # 14| 5: [BlockStmt] { ... } # 15| 5: [Method] f2 #-----| 2: (Generic Parameters) # 15| 0: [TypeVariable] U # 15| 3: [TypeAccess] C1 # 15| 0: [TypeAccess] U # 15| 1: [TypeAccess] U #-----| 4: (Parameters) # 15| 0: [Parameter] u # 15| 0: [TypeAccess] U # 15| 5: [BlockStmt] { ... } # 16| 0: [ReturnStmt] return ... # 16| 0: [ClassInstanceExpr] new C1(...) # 16| -3: [TypeAccess] C1 # 16| 0: [TypeAccess] U # 16| 1: [TypeAccess] U # 16| 0: [VarAccess] u # 20| 6: [Class] C2 # 20| 1: [Constructor] C2 # 20| 5: [BlockStmt] { ... } # 20| 0: [SuperConstructorInvocationStmt] super(...) # 20| 1: [BlockStmt] { ... } # 21| 2: [Method] f4 #-----| 2: (Generic Parameters) # 21| 0: [TypeVariable] P # 21| 3: [TypeAccess] Unit #-----| 4: (Parameters) # 21| 0: [Parameter] p # 21| 0: [TypeAccess] P # 21| 5: [BlockStmt] { ... } # 36| 7: [Class,GenericType,ParameterizedType] BoundedTest #-----| -2: (Generic Parameters) # 36| 0: [TypeVariable] T # 36| 1: [TypeVariable] S # 36| 1: [Constructor] BoundedTest # 36| 5: [BlockStmt] { ... } # 36| 0: [SuperConstructorInvocationStmt] super(...) # 36| 1: [BlockStmt] { ... } # 38| 2: [Method] m # 38| 3: [TypeAccess] Unit #-----| 4: (Parameters) # 38| 0: [Parameter] s # 38| 0: [TypeAccess] S # 38| 1: [Parameter] t # 38| 0: [TypeAccess] T # 38| 5: [BlockStmt] { ... } # 42| 8: [Class,GenericType,ParameterizedType] Outer #-----| -2: (Generic Parameters) # 42| 0: [TypeVariable] T1 # 42| 1: [TypeVariable] T2 # 42| 3: [Constructor] Outer # 42| 5: [BlockStmt] { ... } # 42| 0: [SuperConstructorInvocationStmt] super(...) # 42| 1: [BlockStmt] { ... } # 43| 4: [Class,GenericType,ParameterizedType] Inner1 #-----| -2: (Generic Parameters) # 43| 0: [TypeVariable] T3 # 43| 1: [TypeVariable] T4 # 43| 1: [Constructor] Inner1 # 43| 5: [BlockStmt] { ... } # 43| 0: [SuperConstructorInvocationStmt] super(...) # 43| 1: [BlockStmt] { ... } # 44| 2: [Method] fn1 # 44| 3: [TypeAccess] Unit #-----| 4: (Parameters) # 44| 0: [Parameter] t1 # 44| 0: [TypeAccess] T1 # 44| 1: [Parameter] t2 # 44| 0: [TypeAccess] T2 # 44| 2: [Parameter] t3 # 44| 0: [TypeAccess] T3 # 44| 3: [Parameter] t4 # 44| 0: [TypeAccess] T4 # 44| 5: [BlockStmt] { ... } # 45| 0: [LocalVariableDeclStmt] var ...; # 45| 1: [LocalVariableDeclExpr] c # 45| 0: [ClassInstanceExpr] new Inner1(...) # 45| -3: [TypeAccess] Inner1 # 45| 0: [TypeAccess] Integer # 45| 1: [TypeAccess] String # 45| -2: [ThisAccess] Outer.this # 45| 0: [TypeAccess] Outer # 49| 5: [Class,GenericType,ParameterizedType] Nested1 #-----| -2: (Generic Parameters) # 49| 0: [TypeVariable] T3 # 49| 1: [TypeVariable] T4 # 49| 1: [Constructor] Nested1 # 49| 5: [BlockStmt] { ... } # 49| 0: [SuperConstructorInvocationStmt] super(...) # 49| 1: [BlockStmt] { ... } # 50| 2: [Method] fn2 # 50| 3: [TypeAccess] Unit #-----| 4: (Parameters) # 50| 0: [Parameter] t3 # 50| 0: [TypeAccess] T3 # 50| 1: [Parameter] t4 # 50| 0: [TypeAccess] T4 # 50| 5: [BlockStmt] { ... } # 51| 0: [LocalVariableDeclStmt] var ...; # 51| 1: [LocalVariableDeclExpr] c # 51| 0: [ClassInstanceExpr] new Nested1(...) # 51| -3: [TypeAccess] Nested1 # 51| 0: [TypeAccess] Integer # 51| 1: [TypeAccess] String # 56| 9: [Class,GenericType,ParameterizedType] Class1 #-----| -2: (Generic Parameters) # 56| 0: [TypeVariable] T1 # 56| 1: [Constructor] Class1 # 56| 5: [BlockStmt] { ... } # 56| 0: [SuperConstructorInvocationStmt] super(...) # 56| 1: [BlockStmt] { ... } # 57| 2: [Method] fn1 #-----| 2: (Generic Parameters) # 57| 0: [TypeVariable] T2 # 57| 3: [TypeAccess] Unit #-----| 4: (Parameters) # 57| 0: [Parameter] t # 57| 0: [TypeAccess] T2 # 57| 5: [BlockStmt] { ... } # 58| 0: [LocalTypeDeclStmt] class ... # 58| 0: [Class,GenericType,LocalClass,ParameterizedType] Local #-----| -2: (Generic Parameters) # 58| 0: [TypeVariable] T3 # 58| 1: [Constructor] Local # 58| 5: [BlockStmt] { ... } # 58| 0: [SuperConstructorInvocationStmt] super(...) # 58| 1: [BlockStmt] { ... } # 59| 2: [Method] fn2 #-----| 2: (Generic Parameters) # 59| 0: [TypeVariable] T4 # 59| 3: [TypeAccess] Unit #-----| 4: (Parameters) # 59| 0: [Parameter] t2 # 59| 0: [TypeAccess] T2 # 59| 1: [Parameter] t4 # 59| 0: [TypeAccess] T4 # 59| 5: [BlockStmt] { ... } # 61| 1: [ExprStmt] ; # 61| 0: [MethodCall] fn2(...) # 61| -2: [TypeAccess] String # 61| -1: [ClassInstanceExpr] new Local(...) # 61| -3: [TypeAccess] Local # 61| 0: [TypeAccess] Integer # 61| 0: [VarAccess] t # 61| 1: [StringLiteral] ""