FILE fqName: fileName:/complexAugmentedAssignment.kt CLASS OBJECT name:X1 modality:FINAL visibility:public flags: superTypes:[kotlin.Any] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:X1 flags: CONSTRUCTOR visibility:private <> () returnType:X1 flags:primary BLOCK_BODY DELEGATING_CONSTRUCTOR_CALL 'constructor Any()' INSTANCE_INITIALIZER_CALL classDescriptor='X1' PROPERTY name:x1 visibility:public modality:FINAL flags:var FIELD PROPERTY_BACKING_FIELD name:x1 type:kotlin.Int visibility:public flags: EXPRESSION_BODY CONST Int type=kotlin.Int value=0 FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:X1) returnType:kotlin.Int flags: correspondingProperty: PROPERTY name:x1 visibility:public modality:FINAL flags:var $this: VALUE_PARAMETER name: type:X1 flags: BLOCK_BODY RETURN type=kotlin.Nothing from='(): Int' GET_FIELD 'x1: Int' type=kotlin.Int origin=null receiver: GET_VAR 'this@X1: X1' type=X1 origin=null FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:X1, :kotlin.Int) returnType:kotlin.Unit flags: correspondingProperty: PROPERTY name:x1 visibility:public modality:FINAL flags:var $this: VALUE_PARAMETER name: type:X1 flags: VALUE_PARAMETER name: index:0 type:kotlin.Int flags: BLOCK_BODY SET_FIELD 'x1: Int' type=kotlin.Unit origin=null receiver: GET_VAR 'this@X1: X1' type=X1 origin=null value: GET_VAR 'value-parameter : Int' type=kotlin.Int origin=null CLASS OBJECT name:X2 modality:FINAL visibility:public flags: superTypes:[kotlin.Any] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:X1.X2 flags: CONSTRUCTOR visibility:private <> () returnType:X1.X2 flags:primary BLOCK_BODY DELEGATING_CONSTRUCTOR_CALL 'constructor Any()' INSTANCE_INITIALIZER_CALL classDescriptor='X2' PROPERTY name:x2 visibility:public modality:FINAL flags:var FIELD PROPERTY_BACKING_FIELD name:x2 type:kotlin.Int visibility:public flags: EXPRESSION_BODY CONST Int type=kotlin.Int value=0 FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:X1.X2) returnType:kotlin.Int flags: correspondingProperty: PROPERTY name:x2 visibility:public modality:FINAL flags:var $this: VALUE_PARAMETER name: type:X1.X2 flags: BLOCK_BODY RETURN type=kotlin.Nothing from='(): Int' GET_FIELD 'x2: Int' type=kotlin.Int origin=null receiver: GET_VAR 'this@X2: X2' type=X1.X2 origin=null FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:X1.X2, :kotlin.Int) returnType:kotlin.Unit flags: correspondingProperty: PROPERTY name:x2 visibility:public modality:FINAL flags:var $this: VALUE_PARAMETER name: type:X1.X2 flags: VALUE_PARAMETER name: index:0 type:kotlin.Int flags: BLOCK_BODY SET_FIELD 'x2: Int' type=kotlin.Unit origin=null receiver: GET_VAR 'this@X2: X2' type=X1.X2 origin=null value: GET_VAR 'value-parameter : Int' type=kotlin.Int origin=null CLASS OBJECT name:X3 modality:FINAL visibility:public flags: superTypes:[kotlin.Any] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:X1.X2.X3 flags: CONSTRUCTOR visibility:private <> () returnType:X1.X2.X3 flags:primary BLOCK_BODY DELEGATING_CONSTRUCTOR_CALL 'constructor Any()' INSTANCE_INITIALIZER_CALL classDescriptor='X3' PROPERTY name:x3 visibility:public modality:FINAL flags:var FIELD PROPERTY_BACKING_FIELD name:x3 type:kotlin.Int visibility:public flags: EXPRESSION_BODY CONST Int type=kotlin.Int value=0 FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:X1.X2.X3) returnType:kotlin.Int flags: correspondingProperty: PROPERTY name:x3 visibility:public modality:FINAL flags:var $this: VALUE_PARAMETER name: type:X1.X2.X3 flags: BLOCK_BODY RETURN type=kotlin.Nothing from='(): Int' GET_FIELD 'x3: Int' type=kotlin.Int origin=null receiver: GET_VAR 'this@X3: X3' type=X1.X2.X3 origin=null FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:X1.X2.X3, :kotlin.Int) returnType:kotlin.Unit flags: correspondingProperty: PROPERTY name:x3 visibility:public modality:FINAL flags:var $this: VALUE_PARAMETER name: type:X1.X2.X3 flags: VALUE_PARAMETER name: index:0 type:kotlin.Int flags: BLOCK_BODY SET_FIELD 'x3: Int' type=kotlin.Unit origin=null receiver: GET_VAR 'this@X3: X3' type=X1.X2.X3 origin=null value: GET_VAR 'value-parameter : Int' type=kotlin.Int origin=null FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean flags: overridden: FUN IR_EXTERNAL_DECLARATION_STUB name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean flags: $this: VALUE_PARAMETER name: type:kotlin.Any flags: VALUE_PARAMETER name:other index:0 type:kotlin.Any? flags: FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int flags: overridden: FUN IR_EXTERNAL_DECLARATION_STUB name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int flags: $this: VALUE_PARAMETER name: type:kotlin.Any flags: FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String flags: overridden: FUN IR_EXTERNAL_DECLARATION_STUB name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String flags: $this: VALUE_PARAMETER name: type:kotlin.Any flags: FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean flags: overridden: FUN IR_EXTERNAL_DECLARATION_STUB name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean flags: $this: VALUE_PARAMETER name: type:kotlin.Any flags: VALUE_PARAMETER name:other index:0 type:kotlin.Any? flags: FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int flags: overridden: FUN IR_EXTERNAL_DECLARATION_STUB name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int flags: $this: VALUE_PARAMETER name: type:kotlin.Any flags: FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String flags: overridden: FUN IR_EXTERNAL_DECLARATION_STUB name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String flags: $this: VALUE_PARAMETER name: type:kotlin.Any flags: FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean flags: overridden: FUN IR_EXTERNAL_DECLARATION_STUB name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean flags: $this: VALUE_PARAMETER name: type:kotlin.Any flags: VALUE_PARAMETER name:other index:0 type:kotlin.Any? flags: FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int flags: overridden: FUN IR_EXTERNAL_DECLARATION_STUB name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int flags: $this: VALUE_PARAMETER name: type:kotlin.Any flags: FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String flags: overridden: FUN IR_EXTERNAL_DECLARATION_STUB name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String flags: $this: VALUE_PARAMETER name: type:kotlin.Any flags: FUN name:test1 visibility:public modality:FINAL <> (a:kotlin.IntArray) returnType:kotlin.Unit flags: VALUE_PARAMETER name:a index:0 type:kotlin.IntArray flags: BLOCK_BODY VAR name:i type:kotlin.Int flags:var CONST Int type=kotlin.Int value=0 TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit typeOperand: CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public flags: superTypes:[kotlin.Any] BLOCK type=kotlin.Int origin=POSTFIX_INCR VAR IR_TEMPORARY_VARIABLE name:tmp1_array type:kotlin.IntArray flags:val GET_VAR 'value-parameter a: IntArray' type=kotlin.IntArray origin=null VAR IR_TEMPORARY_VARIABLE name:tmp2_index0 type:kotlin.Int flags:val BLOCK type=kotlin.Int origin=POSTFIX_INCR VAR IR_TEMPORARY_VARIABLE name:tmp0 type:kotlin.Int flags:val GET_VAR 'i: Int' type=kotlin.Int origin=POSTFIX_INCR SET_VAR 'i: Int' type=kotlin.Unit origin=POSTFIX_INCR CALL 'inc(): Int' type=kotlin.Int origin=POSTFIX_INCR $this: GET_VAR 'tmp0: Int' type=kotlin.Int origin=null GET_VAR 'tmp0: Int' type=kotlin.Int origin=null VAR IR_TEMPORARY_VARIABLE name:tmp3 type:kotlin.Int flags:val CALL 'get(Int): Int' type=kotlin.Int origin=POSTFIX_INCR $this: GET_VAR 'tmp1_array: IntArray' type=kotlin.IntArray origin=null index: GET_VAR 'tmp2_index0: Int' type=kotlin.Int origin=null CALL 'set(Int, Int): Unit' type=kotlin.Unit origin=POSTFIX_INCR $this: GET_VAR 'tmp1_array: IntArray' type=kotlin.IntArray origin=null index: GET_VAR 'tmp2_index0: Int' type=kotlin.Int origin=null value: CALL 'inc(): Int' type=kotlin.Int origin=POSTFIX_INCR $this: GET_VAR 'tmp3: Int' type=kotlin.Int origin=null GET_VAR 'tmp3: Int' type=kotlin.Int origin=null FUN name:test2 visibility:public modality:FINAL <> () returnType:kotlin.Unit flags: BLOCK_BODY TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit typeOperand: CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public flags: superTypes:[kotlin.Any] BLOCK type=kotlin.Int origin=POSTFIX_INCR VAR IR_TEMPORARY_VARIABLE name:tmp0_this type:X1 flags:val GET_OBJECT 'X1' type=X1 BLOCK type=kotlin.Int origin=POSTFIX_INCR VAR IR_TEMPORARY_VARIABLE name:tmp1 type:kotlin.Int flags:val CALL '(): Int' type=kotlin.Int origin=POSTFIX_INCR $this: GET_VAR 'tmp0_this: X1' type=X1 origin=null CALL '(Int): Unit' type=kotlin.Unit origin=POSTFIX_INCR $this: GET_VAR 'tmp0_this: X1' type=X1 origin=null : CALL 'inc(): Int' type=kotlin.Int origin=POSTFIX_INCR $this: GET_VAR 'tmp1: Int' type=kotlin.Int origin=null GET_VAR 'tmp1: Int' type=kotlin.Int origin=null TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit typeOperand: CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public flags: superTypes:[kotlin.Any] BLOCK type=kotlin.Int origin=POSTFIX_INCR VAR IR_TEMPORARY_VARIABLE name:tmp2_this type:X1.X2 flags:val GET_OBJECT 'X2' type=X1.X2 BLOCK type=kotlin.Int origin=POSTFIX_INCR VAR IR_TEMPORARY_VARIABLE name:tmp3 type:kotlin.Int flags:val CALL '(): Int' type=kotlin.Int origin=POSTFIX_INCR $this: GET_VAR 'tmp2_this: X1.X2' type=X1.X2 origin=null CALL '(Int): Unit' type=kotlin.Unit origin=POSTFIX_INCR $this: GET_VAR 'tmp2_this: X1.X2' type=X1.X2 origin=null : CALL 'inc(): Int' type=kotlin.Int origin=POSTFIX_INCR $this: GET_VAR 'tmp3: Int' type=kotlin.Int origin=null GET_VAR 'tmp3: Int' type=kotlin.Int origin=null TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit typeOperand: CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public flags: superTypes:[kotlin.Any] BLOCK type=kotlin.Int origin=POSTFIX_INCR VAR IR_TEMPORARY_VARIABLE name:tmp4_this type:X1.X2.X3 flags:val GET_OBJECT 'X3' type=X1.X2.X3 BLOCK type=kotlin.Int origin=POSTFIX_INCR VAR IR_TEMPORARY_VARIABLE name:tmp5 type:kotlin.Int flags:val CALL '(): Int' type=kotlin.Int origin=POSTFIX_INCR $this: GET_VAR 'tmp4_this: X1.X2.X3' type=X1.X2.X3 origin=null CALL '(Int): Unit' type=kotlin.Unit origin=POSTFIX_INCR $this: GET_VAR 'tmp4_this: X1.X2.X3' type=X1.X2.X3 origin=null : CALL 'inc(): Int' type=kotlin.Int origin=POSTFIX_INCR $this: GET_VAR 'tmp5: Int' type=kotlin.Int origin=null GET_VAR 'tmp5: Int' type=kotlin.Int origin=null CLASS CLASS name:B modality:FINAL visibility:public flags: superTypes:[kotlin.Any] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:B flags: CONSTRUCTOR visibility:public <> (s:kotlin.Int) returnType:B flags:primary VALUE_PARAMETER name:s index:0 type:kotlin.Int flags: EXPRESSION_BODY CONST Int type=kotlin.Int value=0 BLOCK_BODY DELEGATING_CONSTRUCTOR_CALL 'constructor Any()' INSTANCE_INITIALIZER_CALL classDescriptor='B' PROPERTY name:s visibility:public modality:FINAL flags:var FIELD PROPERTY_BACKING_FIELD name:s type:kotlin.Int visibility:public flags: EXPRESSION_BODY GET_VAR 'value-parameter s: Int = ...' type=kotlin.Int origin=INITIALIZE_PROPERTY_FROM_PARAMETER FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:B) returnType:kotlin.Int flags: correspondingProperty: PROPERTY name:s visibility:public modality:FINAL flags:var $this: VALUE_PARAMETER name: type:B flags: BLOCK_BODY RETURN type=kotlin.Nothing from='(): Int' GET_FIELD 's: Int' type=kotlin.Int origin=null receiver: GET_VAR 'this@B: B' type=B origin=null FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:B, :kotlin.Int) returnType:kotlin.Unit flags: correspondingProperty: PROPERTY name:s visibility:public modality:FINAL flags:var $this: VALUE_PARAMETER name: type:B flags: VALUE_PARAMETER name: index:0 type:kotlin.Int flags: BLOCK_BODY SET_FIELD 's: Int' type=kotlin.Unit origin=null receiver: GET_VAR 'this@B: B' type=B origin=null value: GET_VAR 'value-parameter : Int' type=kotlin.Int origin=null FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean flags: overridden: FUN IR_EXTERNAL_DECLARATION_STUB name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean flags: $this: VALUE_PARAMETER name: type:kotlin.Any flags: VALUE_PARAMETER name:other index:0 type:kotlin.Any? flags: FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int flags: overridden: FUN IR_EXTERNAL_DECLARATION_STUB name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int flags: $this: VALUE_PARAMETER name: type:kotlin.Any flags: FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String flags: overridden: FUN IR_EXTERNAL_DECLARATION_STUB name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String flags: $this: VALUE_PARAMETER name: type:kotlin.Any flags: CLASS OBJECT name:Host modality:FINAL visibility:public flags: superTypes:[kotlin.Any] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:Host flags: CONSTRUCTOR visibility:private <> () returnType:Host flags:primary BLOCK_BODY DELEGATING_CONSTRUCTOR_CALL 'constructor Any()' INSTANCE_INITIALIZER_CALL classDescriptor='Host' FUN name:plusAssign visibility:public modality:FINAL <> ($this:Host, $receiver:B, b:B) returnType:kotlin.Unit flags: $this: VALUE_PARAMETER name: type:Host flags: $receiver: VALUE_PARAMETER name: type:B flags: VALUE_PARAMETER name:b index:0 type:B flags: BLOCK_BODY BLOCK type=kotlin.Unit origin=PLUSEQ VAR IR_TEMPORARY_VARIABLE name:tmp0_this type:B flags:val GET_VAR 'this@plusAssign: B' type=B origin=null CALL '(Int): Unit' type=kotlin.Unit origin=PLUSEQ $this: GET_VAR 'tmp0_this: B' type=B origin=null : CALL 'plus(Int): Int' type=kotlin.Int origin=PLUSEQ $this: CALL '(): Int' type=kotlin.Int origin=PLUSEQ $this: GET_VAR 'tmp0_this: B' type=B origin=null other: CALL '(): Int' type=kotlin.Int origin=GET_PROPERTY $this: GET_VAR 'value-parameter b: B' type=B origin=null FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean flags: overridden: FUN IR_EXTERNAL_DECLARATION_STUB name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean flags: $this: VALUE_PARAMETER name: type:kotlin.Any flags: VALUE_PARAMETER name:other index:0 type:kotlin.Any? flags: FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int flags: overridden: FUN IR_EXTERNAL_DECLARATION_STUB name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int flags: $this: VALUE_PARAMETER name: type:kotlin.Any flags: FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String flags: overridden: FUN IR_EXTERNAL_DECLARATION_STUB name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String flags: $this: VALUE_PARAMETER name: type:kotlin.Any flags: FUN name:test3 visibility:public modality:FINAL <> ($receiver:Host, v:B) returnType:kotlin.Unit flags: $receiver: VALUE_PARAMETER name: type:Host flags: VALUE_PARAMETER name:v index:0 type:B flags: BLOCK_BODY CALL 'plusAssign(B) on B: Unit' type=kotlin.Unit origin=PLUSEQ $this: GET_VAR 'this@test3: Host' type=Host origin=null $receiver: GET_VAR 'value-parameter v: B' type=B origin=PLUSEQ b: CALL 'constructor B(Int = ...)' type=B origin=null s: CONST Int type=kotlin.Int value=1000