app/src/main/kotlin/testProject/App.kt: # 0| [CompilationUnit] App # 7| 1: [Class] Project # 0| 1: [Constructor] Project #-----| 4: (Parameters) # 0| 0: [Parameter] seen1 # 0| 0: [TypeAccess] int # 0| 1: [Parameter] name # 0| 0: [TypeAccess] String # 0| 2: [Parameter] language # 0| 0: [TypeAccess] int # 0| 3: [Parameter] serializationConstructorMarker # 0| 0: [TypeAccess] SerializationConstructorMarker # 7| 5: [BlockStmt] { ... } # 7| 0: [ExprStmt] ; # 7| 0: [WhenExpr] when ... # 7| 0: [WhenBranch] ... -> ... # 7| 0: [ValueNEExpr] ... (value not-equals) ... # 7| 0: [IntegerLiteral] 3 # 7| 1: [AndBitwiseExpr] ... & ... # 7| 0: [IntegerLiteral] 3 # 7| 1: [VarAccess] seen1 # 7| 1: [ExprStmt] ; # 7| 0: [MethodAccess] throwMissingFieldException(...) # 7| -1: [TypeAccess] PluginExceptionsKt # 7| 0: [VarAccess] seen1 # 7| 1: [IntegerLiteral] 3 # 7| 2: [MethodAccess] getDescriptor(...) # 7| -1: [VarAccess] INSTANCE # 7| 1: [SuperConstructorInvocationStmt] super(...) # 7| 2: [ExprStmt] ; # 7| 0: [AssignExpr] ...=... # 7| 0: [VarAccess] Project.this.name # 7| -1: [ThisAccess] Project.this # 7| 0: [TypeAccess] Project # 7| 1: [VarAccess] name # 7| 3: [ExprStmt] ; # 7| 0: [AssignExpr] ...=... # 7| 0: [VarAccess] Project.this.language # 7| -1: [ThisAccess] Project.this # 7| 0: [TypeAccess] Project # 7| 1: [VarAccess] language # 0| 2: [Method] component1 # 0| 3: [TypeAccess] String # 0| 5: [BlockStmt] { ... } # 0| 0: [ReturnStmt] return ... # 0| 0: [VarAccess] this.name # 0| -1: [ThisAccess] this # 0| 3: [Method] component2 # 0| 3: [TypeAccess] int # 0| 5: [BlockStmt] { ... } # 0| 0: [ReturnStmt] return ... # 0| 0: [VarAccess] this.language # 0| -1: [ThisAccess] this # 0| 4: [Method] copy # 0| 3: [TypeAccess] Project #-----| 4: (Parameters) # 8| 0: [Parameter] name # 8| 0: [TypeAccess] String # 8| 1: [Parameter] language # 8| 0: [TypeAccess] int # 0| 5: [BlockStmt] { ... } # 0| 0: [ReturnStmt] return ... # 0| 0: [ClassInstanceExpr] new Project(...) # 0| -3: [TypeAccess] Project # 0| 0: [VarAccess] name # 0| 1: [VarAccess] language # 0| 5: [Method] copy$default # 0| 3: [TypeAccess] Project #-----| 4: (Parameters) # 0| 0: [Parameter] p0 # 0| 0: [TypeAccess] Project # 0| 1: [Parameter] p1 # 0| 0: [TypeAccess] String # 0| 2: [Parameter] p2 # 0| 0: [TypeAccess] int # 0| 3: [Parameter] p3 # 0| 0: [TypeAccess] int # 0| 4: [Parameter] p4 # 0| 0: [TypeAccess] Object # 0| 5: [BlockStmt] { ... } # 0| 0: [IfStmt] if (...) # 0| 0: [EQExpr] ... == ... # 0| 0: [AndBitwiseExpr] ... & ... # 0| 0: [IntegerLiteral] 1 # 0| 1: [VarAccess] p3 # 0| 1: [IntegerLiteral] 0 # 0| 1: [ExprStmt] ; # 0| 0: [AssignExpr] ...=... # 0| 0: [VarAccess] p1 # 0| 1: [VarAccess] p0.name # 0| -1: [VarAccess] p0 # 0| 1: [IfStmt] if (...) # 0| 0: [EQExpr] ... == ... # 0| 0: [AndBitwiseExpr] ... & ... # 0| 0: [IntegerLiteral] 2 # 0| 1: [VarAccess] p3 # 0| 1: [IntegerLiteral] 0 # 0| 1: [ExprStmt] ; # 0| 0: [AssignExpr] ...=... # 0| 0: [VarAccess] p2 # 0| 1: [VarAccess] p0.language # 0| -1: [VarAccess] p0 # 0| 2: [ReturnStmt] return ... # 0| 0: [MethodAccess] copy(...) # 0| -1: [VarAccess] p0 # 0| 0: [VarAccess] p1 # 0| 1: [VarAccess] p2 # 0| 6: [Method] equals # 0| 3: [TypeAccess] boolean #-----| 4: (Parameters) # 0| 0: [Parameter] other # 0| 0: [TypeAccess] Object # 0| 5: [BlockStmt] { ... } # 0| 0: [ExprStmt] ; # 0| 0: [WhenExpr] when ... # 0| 0: [WhenBranch] ... -> ... # 0| 0: [EQExpr] ... == ... # 0| 0: [ThisAccess] this # 0| 1: [VarAccess] other # 0| 1: [ReturnStmt] return ... # 0| 0: [BooleanLiteral] true # 0| 1: [ExprStmt] ; # 0| 0: [WhenExpr] when ... # 0| 0: [WhenBranch] ... -> ... # 0| 0: [NotInstanceOfExpr] ... !is ... # 0| 0: [VarAccess] other # 0| 1: [TypeAccess] Project # 0| 1: [ReturnStmt] return ... # 0| 0: [BooleanLiteral] false # 0| 2: [LocalVariableDeclStmt] var ...; # 0| 1: [LocalVariableDeclExpr] tmp0_other_with_cast # 0| 0: [CastExpr] (...)... # 0| 0: [TypeAccess] Project # 0| 1: [VarAccess] other # 0| 3: [ExprStmt] ; # 0| 0: [WhenExpr] when ... # 0| 0: [WhenBranch] ... -> ... # 0| 0: [ValueNEExpr] ... (value not-equals) ... # 0| 0: [VarAccess] this.name # 0| -1: [ThisAccess] this # 0| 1: [VarAccess] tmp0_other_with_cast.name # 0| -1: [VarAccess] tmp0_other_with_cast # 0| 1: [ReturnStmt] return ... # 0| 0: [BooleanLiteral] false # 0| 4: [ExprStmt] ; # 0| 0: [WhenExpr] when ... # 0| 0: [WhenBranch] ... -> ... # 0| 0: [ValueNEExpr] ... (value not-equals) ... # 0| 0: [VarAccess] this.language # 0| -1: [ThisAccess] this # 0| 1: [VarAccess] tmp0_other_with_cast.language # 0| -1: [VarAccess] tmp0_other_with_cast # 0| 1: [ReturnStmt] return ... # 0| 0: [BooleanLiteral] false # 0| 5: [ReturnStmt] return ... # 0| 0: [BooleanLiteral] true # 0| 7: [Method] hashCode # 0| 3: [TypeAccess] int # 0| 5: [BlockStmt] { ... } # 0| 0: [LocalVariableDeclStmt] var ...; # 0| 1: [LocalVariableDeclExpr] result # 0| 0: [MethodAccess] hashCode(...) # 0| -1: [VarAccess] this.name # 0| -1: [ThisAccess] this # 0| 1: [ExprStmt] ; # 0| 0: [AssignExpr] ...=... # 0| 0: [VarAccess] result # 0| 1: [AddExpr] ... + ... # 0| 0: [MulExpr] ... * ... # 0| 0: [VarAccess] result # 0| 1: [IntegerLiteral] 31 # 0| 1: [MethodAccess] hashCode(...) # 0| -1: [VarAccess] this.language # 0| -1: [ThisAccess] this # 0| 2: [ReturnStmt] return ... # 0| 0: [VarAccess] result # 0| 8: [Method] toString # 0| 3: [TypeAccess] String # 0| 5: [BlockStmt] { ... } # 0| 0: [ReturnStmt] return ... # 0| 0: [StringTemplateExpr] "..." # 0| 0: [StringLiteral] Project( # 0| 1: [StringLiteral] name= # 0| 2: [VarAccess] this.name # 0| -1: [ThisAccess] this # 0| 3: [StringLiteral] , # 0| 4: [StringLiteral] language= # 0| 5: [VarAccess] this.language # 0| -1: [ThisAccess] this # 0| 6: [StringLiteral] ) # 0| 9: [Method] write$Self # 0| 3: [TypeAccess] Unit #-----| 4: (Parameters) # 0| 0: [Parameter] self # 0| 0: [TypeAccess] Project # 0| 1: [Parameter] output # 0| 0: [TypeAccess] CompositeEncoder # 0| 2: [Parameter] serialDesc # 0| 0: [TypeAccess] SerialDescriptor # 7| 5: [BlockStmt] { ... } # 7| 0: [ExprStmt] ; # 7| 0: [MethodAccess] encodeStringElement(...) # 7| -1: [VarAccess] output # 7| 0: [VarAccess] serialDesc # 7| 1: [IntegerLiteral] 0 # 7| 2: [MethodAccess] getName(...) # 7| -1: [VarAccess] self # 7| 1: [ExprStmt] ; # 7| 0: [MethodAccess] encodeIntElement(...) # 7| -1: [VarAccess] output # 7| 0: [VarAccess] serialDesc # 7| 1: [IntegerLiteral] 1 # 7| 2: [MethodAccess] getLanguage(...) # 7| -1: [VarAccess] self # 7| 10: [Class] $serializer # 0| 1: [FieldDeclaration] SerialDescriptor descriptor; # 0| -1: [TypeAccess] SerialDescriptor # 0| 2: [Method] childSerializers # 0| 3: [TypeAccess] KSerializer[] # 0| 0: [TypeAccess] KSerializer # 0| 0: [WildcardTypeAccess] ? ... # 7| 5: [BlockStmt] { ... } # 7| 0: [ReturnStmt] return ... # 7| 0: [ArrayCreationExpr] new KSerializer[] # 7| -2: [ArrayInit] {...} # 7| -1: [TypeAccess] KSerializer # 7| 0: [IntegerLiteral] 2 # 0| 3: [Method] deserialize # 0| 3: [TypeAccess] Project #-----| 4: (Parameters) # 0| 0: [Parameter] decoder # 0| 0: [TypeAccess] Decoder # 7| 5: [BlockStmt] { ... } # 7| 0: [LocalVariableDeclStmt] var ...; # 7| 1: [LocalVariableDeclExpr] tmp0_desc # 7| 0: [MethodAccess] getDescriptor(...) # 7| -1: [ThisAccess] this # 7| 1: [LocalVariableDeclStmt] var ...; # 7| 1: [LocalVariableDeclExpr] tmp1_flag # 7| 0: [BooleanLiteral] true # 7| 2: [LocalVariableDeclStmt] var ...; # 7| 1: [LocalVariableDeclExpr] tmp2_index # 7| 0: [IntegerLiteral] 0 # 7| 3: [LocalVariableDeclStmt] var ...; # 7| 1: [LocalVariableDeclExpr] tmp3_bitMask0 # 7| 0: [IntegerLiteral] 0 # 7| 4: [LocalVariableDeclStmt] var ...; # 7| 1: [LocalVariableDeclExpr] tmp4_local0 # 7| 0: [NullLiteral] null # 7| 5: [LocalVariableDeclStmt] var ...; # 7| 1: [LocalVariableDeclExpr] tmp5_local1 # 7| 0: [IntegerLiteral] 0 # 7| 6: [LocalVariableDeclStmt] var ...; # 7| 1: [LocalVariableDeclExpr] tmp6_input # 7| 0: [MethodAccess] beginStructure(...) # 7| -1: [VarAccess] decoder # 7| 0: [VarAccess] tmp0_desc # 7| 7: [ExprStmt] ; # 7| 0: [WhenExpr] when ... # 7| 0: [WhenBranch] ... -> ... # 7| 0: [MethodAccess] decodeSequentially(...) # 7| -1: [VarAccess] tmp6_input # 7| 1: [BlockStmt] { ... } # 7| 0: [BlockStmt] { ... } # 7| 0: [ExprStmt] ; # 7| 0: [AssignExpr] ...=... # 7| 0: [VarAccess] tmp4_local0 # 7| 1: [MethodAccess] decodeStringElement(...) # 7| -1: [VarAccess] tmp6_input # 7| 0: [VarAccess] tmp0_desc # 7| 1: [IntegerLiteral] 0 # 7| 1: [ExprStmt] ; # 7| 0: [AssignExpr] ...=... # 7| 0: [VarAccess] tmp3_bitMask0 # 7| 1: [OrBitwiseExpr] ... | ... # 7| 0: [VarAccess] tmp3_bitMask0 # 7| 1: [IntegerLiteral] 1 # 7| 1: [BlockStmt] { ... } # 7| 0: [ExprStmt] ; # 7| 0: [AssignExpr] ...=... # 7| 0: [VarAccess] tmp5_local1 # 7| 1: [MethodAccess] decodeIntElement(...) # 7| -1: [VarAccess] tmp6_input # 7| 0: [VarAccess] tmp0_desc # 7| 1: [IntegerLiteral] 1 # 7| 1: [ExprStmt] ; # 7| 0: [AssignExpr] ...=... # 7| 0: [VarAccess] tmp3_bitMask0 # 7| 1: [OrBitwiseExpr] ... | ... # 7| 0: [VarAccess] tmp3_bitMask0 # 7| 1: [IntegerLiteral] 2 # 7| 1: [WhenBranch] ... -> ... # 7| 0: [BooleanLiteral] true # 7| 1: [WhileStmt] while (...) # 7| 0: [VarAccess] tmp1_flag # 7| 1: [BlockStmt] { ... } # 7| 0: [ExprStmt] ; # 7| 0: [AssignExpr] ...=... # 7| 0: [VarAccess] tmp2_index # 7| 1: [MethodAccess] decodeElementIndex(...) # 7| -1: [VarAccess] tmp6_input # 7| 0: [VarAccess] tmp0_desc # 7| 1: [ExprStmt] ; # 7| 0: [WhenExpr] when ... # 7| 0: [WhenBranch] ... -> ... # 7| 0: [ValueEQExpr] ... (value equals) ... # 7| 0: [VarAccess] tmp2_index # 7| 1: [IntegerLiteral] -1 # 7| 1: [ExprStmt] ; # 7| 0: [AssignExpr] ...=... # 7| 0: [VarAccess] tmp1_flag # 7| 1: [BooleanLiteral] false # 7| 1: [WhenBranch] ... -> ... # 7| 0: [ValueEQExpr] ... (value equals) ... # 7| 0: [VarAccess] tmp2_index # 7| 1: [IntegerLiteral] 0 # 7| 1: [BlockStmt] { ... } # 7| 0: [ExprStmt] ; # 7| 0: [AssignExpr] ...=... # 7| 0: [VarAccess] tmp4_local0 # 7| 1: [MethodAccess] decodeStringElement(...) # 7| -1: [VarAccess] tmp6_input # 7| 0: [VarAccess] tmp0_desc # 7| 1: [IntegerLiteral] 0 # 7| 1: [ExprStmt] ; # 7| 0: [AssignExpr] ...=... # 7| 0: [VarAccess] tmp3_bitMask0 # 7| 1: [OrBitwiseExpr] ... | ... # 7| 0: [VarAccess] tmp3_bitMask0 # 7| 1: [IntegerLiteral] 1 # 7| 2: [WhenBranch] ... -> ... # 7| 0: [ValueEQExpr] ... (value equals) ... # 7| 0: [VarAccess] tmp2_index # 7| 1: [IntegerLiteral] 1 # 7| 1: [BlockStmt] { ... } # 7| 0: [ExprStmt] ; # 7| 0: [AssignExpr] ...=... # 7| 0: [VarAccess] tmp5_local1 # 7| 1: [MethodAccess] decodeIntElement(...) # 7| -1: [VarAccess] tmp6_input # 7| 0: [VarAccess] tmp0_desc # 7| 1: [IntegerLiteral] 1 # 7| 1: [ExprStmt] ; # 7| 0: [AssignExpr] ...=... # 7| 0: [VarAccess] tmp3_bitMask0 # 7| 1: [OrBitwiseExpr] ... | ... # 7| 0: [VarAccess] tmp3_bitMask0 # 7| 1: [IntegerLiteral] 2 # 7| 3: [WhenBranch] ... -> ... # 7| 0: [BooleanLiteral] true # 7| 1: [ThrowStmt] throw ... # 7| 0: [ClassInstanceExpr] new UnknownFieldException(...) # 7| -3: [TypeAccess] UnknownFieldException # 7| 0: [VarAccess] tmp2_index # 7| 8: [ExprStmt] ; # 7| 0: [MethodAccess] endStructure(...) # 7| -1: [VarAccess] tmp6_input # 7| 0: [VarAccess] tmp0_desc # 7| 9: [ReturnStmt] return ... # 7| 0: [ClassInstanceExpr] new Project(...) # 7| -3: [TypeAccess] Project # 7| 0: [VarAccess] tmp3_bitMask0 # 7| 1: [VarAccess] tmp4_local0 # 7| 2: [VarAccess] tmp5_local1 # 7| 3: [NullLiteral] null # 0| 4: [Method] getDescriptor # 0| 3: [TypeAccess] SerialDescriptor # 0| 5: [BlockStmt] { ... } # 0| 0: [ReturnStmt] return ... # 0| 0: [VarAccess] this.descriptor # 0| -1: [ThisAccess] this # 0| 5: [Method] serialize # 0| 3: [TypeAccess] Unit #-----| 4: (Parameters) # 0| 0: [Parameter] encoder # 0| 0: [TypeAccess] Encoder # 0| 1: [Parameter] value # 0| 0: [TypeAccess] Project # 7| 5: [BlockStmt] { ... } # 7| 0: [LocalVariableDeclStmt] var ...; # 7| 1: [LocalVariableDeclExpr] tmp0_desc # 7| 0: [MethodAccess] getDescriptor(...) # 7| -1: [ThisAccess] this # 7| 1: [LocalVariableDeclStmt] var ...; # 7| 1: [LocalVariableDeclExpr] tmp1_output # 7| 0: [MethodAccess] beginStructure(...) # 7| -1: [VarAccess] encoder # 7| 0: [VarAccess] tmp0_desc # 7| 2: [ExprStmt] ; # 7| 0: [MethodAccess] write$Self(...) # 7| -1: [TypeAccess] Project # 7| 0: [VarAccess] value # 7| 1: [VarAccess] tmp1_output # 7| 2: [VarAccess] tmp0_desc # 7| 3: [ExprStmt] ; # 7| 0: [MethodAccess] endStructure(...) # 7| -1: [VarAccess] tmp1_output # 7| 0: [VarAccess] tmp0_desc # 7| 6: [Constructor] $serializer # 7| 5: [BlockStmt] { ... } # 7| 0: [SuperConstructorInvocationStmt] super(...) # 7| 1: [BlockStmt] { ... } # 7| 0: [LocalVariableDeclStmt] var ...; # 7| 1: [LocalVariableDeclExpr] tmp0_serialDesc # 7| 0: [ClassInstanceExpr] new PluginGeneratedSerialDescriptor(...) # 7| -3: [TypeAccess] PluginGeneratedSerialDescriptor # 7| 0: [StringLiteral] testProject.Project # 7| 1: [ThisAccess] $serializer.this # 7| 0: [TypeAccess] $serializer # 7| 2: [IntegerLiteral] 2 # 7| 1: [ExprStmt] ; # 7| 0: [MethodAccess] addElement(...) # 7| -1: [VarAccess] tmp0_serialDesc # 7| 0: [StringLiteral] name # 7| 1: [BooleanLiteral] false # 7| 2: [ExprStmt] ; # 7| 0: [MethodAccess] addElement(...) # 7| -1: [VarAccess] tmp0_serialDesc # 7| 0: [StringLiteral] language # 7| 1: [BooleanLiteral] false # 7| 3: [ExprStmt] ; # 7| 0: [AssignExpr] ...=... # 7| 0: [VarAccess] $serializer.this.descriptor # 7| -1: [ThisAccess] $serializer.this # 7| 0: [TypeAccess] $serializer # 7| 1: [VarAccess] tmp0_serialDesc # 7| 11: [Class] Companion # 0| 1: [Method] serializer # 0| 3: [TypeAccess] KSerializer # 0| 0: [TypeAccess] Project # 7| 5: [BlockStmt] { ... } # 7| 0: [ReturnStmt] return ... # 7| 0: [VarAccess] INSTANCE # 7| 2: [Constructor] Companion # 7| 5: [BlockStmt] { ... } # 7| 0: [SuperConstructorInvocationStmt] super(...) # 7| 1: [BlockStmt] { ... } # 8| 12: [Constructor] Project #-----| 4: (Parameters) # 8| 0: [Parameter] name # 8| 0: [TypeAccess] String # 8| 1: [Parameter] language # 8| 0: [TypeAccess] int # 7| 5: [BlockStmt] { ... } # 7| 0: [SuperConstructorInvocationStmt] super(...) # 8| 1: [BlockStmt] { ... } # 8| 0: [ExprStmt] ; # 8| 0: [KtInitializerAssignExpr] ...=... # 8| 0: [VarAccess] name # 8| 1: [ExprStmt] ; # 8| 0: [KtInitializerAssignExpr] ...=... # 8| 0: [VarAccess] language # 8| 13: [FieldDeclaration] String name; # 8| -1: [TypeAccess] String # 8| 0: [VarAccess] name # 8| 14: [Method] getName # 8| 3: [TypeAccess] String # 8| 5: [BlockStmt] { ... } # 8| 0: [ReturnStmt] return ... # 8| 0: [VarAccess] this.name # 8| -1: [ThisAccess] this # 8| 15: [Method] getLanguage # 8| 3: [TypeAccess] int # 8| 5: [BlockStmt] { ... } # 8| 0: [ReturnStmt] return ... # 8| 0: [VarAccess] this.language # 8| -1: [ThisAccess] this # 8| 16: [FieldDeclaration] int language; # 8| -1: [TypeAccess] int # 8| 0: [VarAccess] language