FILE /complexAugmentedAssignment.kt
  CLASS OBJECT X1
    CONSTRUCTOR private constructor X1()
      BLOCK_BODY
        DELEGATING_CONSTRUCTOR_CALL 'constructor Any()'
        INSTANCE_INITIALIZER_CALL classDescriptor='X1'
    PROPERTY public final var x1: kotlin.Int
      FIELD PROPERTY_BACKING_FIELD public final var x1: kotlin.Int
        EXPRESSION_BODY
          CONST Int type=kotlin.Int value='0'
      FUN DEFAULT_PROPERTY_ACCESSOR public final fun <get-x1>(): kotlin.Int
        BLOCK_BODY
          RETURN type=kotlin.Nothing from='<get-x1>(): Int'
            GET_FIELD 'x1: Int' type=kotlin.Int origin=null
              receiver: GET_VAR '<receiver: X1>' type=X1 origin=null
      FUN DEFAULT_PROPERTY_ACCESSOR public final fun <set-x1>(<set-?>: kotlin.Int): kotlin.Unit
        BLOCK_BODY
          SET_FIELD 'x1: Int' type=kotlin.Unit origin=null
            receiver: GET_VAR '<receiver: X1>' type=X1 origin=null
            value: GET_VAR 'value-parameter <set-?>: Int' type=kotlin.Int origin=null
    CLASS OBJECT X2
      CONSTRUCTOR private constructor X2()
        BLOCK_BODY
          DELEGATING_CONSTRUCTOR_CALL 'constructor Any()'
          INSTANCE_INITIALIZER_CALL classDescriptor='X2'
      PROPERTY public final var x2: kotlin.Int
        FIELD PROPERTY_BACKING_FIELD public final var x2: kotlin.Int
          EXPRESSION_BODY
            CONST Int type=kotlin.Int value='0'
        FUN DEFAULT_PROPERTY_ACCESSOR public final fun <get-x2>(): kotlin.Int
          BLOCK_BODY
            RETURN type=kotlin.Nothing from='<get-x2>(): Int'
              GET_FIELD 'x2: Int' type=kotlin.Int origin=null
                receiver: GET_VAR '<receiver: X2>' type=X1.X2 origin=null
        FUN DEFAULT_PROPERTY_ACCESSOR public final fun <set-x2>(<set-?>: kotlin.Int): kotlin.Unit
          BLOCK_BODY
            SET_FIELD 'x2: Int' type=kotlin.Unit origin=null
              receiver: GET_VAR '<receiver: X2>' type=X1.X2 origin=null
              value: GET_VAR 'value-parameter <set-?>: Int' type=kotlin.Int origin=null
      CLASS OBJECT X3
        CONSTRUCTOR private constructor X3()
          BLOCK_BODY
            DELEGATING_CONSTRUCTOR_CALL 'constructor Any()'
            INSTANCE_INITIALIZER_CALL classDescriptor='X3'
        PROPERTY public final var x3: kotlin.Int
          FIELD PROPERTY_BACKING_FIELD public final var x3: kotlin.Int
            EXPRESSION_BODY
              CONST Int type=kotlin.Int value='0'
          FUN DEFAULT_PROPERTY_ACCESSOR public final fun <get-x3>(): kotlin.Int
            BLOCK_BODY
              RETURN type=kotlin.Nothing from='<get-x3>(): Int'
                GET_FIELD 'x3: Int' type=kotlin.Int origin=null
                  receiver: GET_VAR '<receiver: X3>' type=X1.X2.X3 origin=null
          FUN DEFAULT_PROPERTY_ACCESSOR public final fun <set-x3>(<set-?>: kotlin.Int): kotlin.Unit
            BLOCK_BODY
              SET_FIELD 'x3: Int' type=kotlin.Unit origin=null
                receiver: GET_VAR '<receiver: X3>' type=X1.X2.X3 origin=null
                value: GET_VAR 'value-parameter <set-?>: Int' type=kotlin.Int origin=null
  FUN public fun test1(a: kotlin.IntArray): kotlin.Unit
    BLOCK_BODY
      VAR var i: kotlin.Int
        CONST Int type=kotlin.Int value='0'
      TYPE_OP origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
        BLOCK type=kotlin.Int origin=POSTFIX_INCR
          VAR IR_TEMPORARY_VARIABLE val tmp1_array: kotlin.IntArray
            GET_VAR 'value-parameter a: IntArray' type=kotlin.IntArray origin=null
          VAR IR_TEMPORARY_VARIABLE val tmp2_index0: kotlin.Int
            BLOCK type=kotlin.Int origin=POSTFIX_INCR
              VAR IR_TEMPORARY_VARIABLE val tmp0: kotlin.Int
                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 val tmp3: kotlin.Int
            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 public fun test2(): kotlin.Unit
    BLOCK_BODY
      TYPE_OP origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
        BLOCK type=kotlin.Int origin=POSTFIX_INCR
          VAR IR_TEMPORARY_VARIABLE val tmp0_this: X1
            GET_OBJECT 'X1' type=X1
          BLOCK type=kotlin.Int origin=POSTFIX_INCR
            VAR IR_TEMPORARY_VARIABLE val tmp1: kotlin.Int
              CALL '<get-x1>(): Int' type=kotlin.Int origin=POSTFIX_INCR
                $this: GET_VAR 'tmp0_this: X1' type=X1 origin=null
            CALL '<set-x1>(Int): Unit' type=kotlin.Unit origin=POSTFIX_INCR
              $this: GET_VAR 'tmp0_this: X1' type=X1 origin=null
              <set-?>: 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 origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
        BLOCK type=kotlin.Int origin=POSTFIX_INCR
          VAR IR_TEMPORARY_VARIABLE val tmp2_this: X1.X2
            GET_OBJECT 'X2' type=X1.X2
          BLOCK type=kotlin.Int origin=POSTFIX_INCR
            VAR IR_TEMPORARY_VARIABLE val tmp3: kotlin.Int
              CALL '<get-x2>(): Int' type=kotlin.Int origin=POSTFIX_INCR
                $this: GET_VAR 'tmp2_this: X1.X2' type=X1.X2 origin=null
            CALL '<set-x2>(Int): Unit' type=kotlin.Unit origin=POSTFIX_INCR
              $this: GET_VAR 'tmp2_this: X1.X2' type=X1.X2 origin=null
              <set-?>: 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 origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
        BLOCK type=kotlin.Int origin=POSTFIX_INCR
          VAR IR_TEMPORARY_VARIABLE val tmp4_this: X1.X2.X3
            GET_OBJECT 'X3' type=X1.X2.X3
          BLOCK type=kotlin.Int origin=POSTFIX_INCR
            VAR IR_TEMPORARY_VARIABLE val tmp5: kotlin.Int
              CALL '<get-x3>(): Int' type=kotlin.Int origin=POSTFIX_INCR
                $this: GET_VAR 'tmp4_this: X1.X2.X3' type=X1.X2.X3 origin=null
            CALL '<set-x3>(Int): Unit' type=kotlin.Unit origin=POSTFIX_INCR
              $this: GET_VAR 'tmp4_this: X1.X2.X3' type=X1.X2.X3 origin=null
              <set-?>: 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 B
    CONSTRUCTOR public constructor B(s: kotlin.Int = ...)
      s: EXPRESSION_BODY
        CONST Int type=kotlin.Int value='0'
      BLOCK_BODY
        DELEGATING_CONSTRUCTOR_CALL 'constructor Any()'
        INSTANCE_INITIALIZER_CALL classDescriptor='B'
    PROPERTY public final var s: kotlin.Int
      FIELD PROPERTY_BACKING_FIELD public final var s: kotlin.Int
        EXPRESSION_BODY
          GET_VAR 'value-parameter s: Int = ...' type=kotlin.Int origin=INITIALIZE_PROPERTY_FROM_PARAMETER
      FUN DEFAULT_PROPERTY_ACCESSOR public final fun <get-s>(): kotlin.Int
        BLOCK_BODY
          RETURN type=kotlin.Nothing from='<get-s>(): Int'
            GET_FIELD 's: Int' type=kotlin.Int origin=null
              receiver: GET_VAR '<receiver: B>' type=B origin=null
      FUN DEFAULT_PROPERTY_ACCESSOR public final fun <set-s>(<set-?>: kotlin.Int): kotlin.Unit
        BLOCK_BODY
          SET_FIELD 's: Int' type=kotlin.Unit origin=null
            receiver: GET_VAR '<receiver: B>' type=B origin=null
            value: GET_VAR 'value-parameter <set-?>: Int' type=kotlin.Int origin=null
  CLASS OBJECT Host
    CONSTRUCTOR private constructor Host()
      BLOCK_BODY
        DELEGATING_CONSTRUCTOR_CALL 'constructor Any()'
        INSTANCE_INITIALIZER_CALL classDescriptor='Host'
    FUN public final operator fun B.plusAssign(b: B): kotlin.Unit
      BLOCK_BODY
        BLOCK type=kotlin.Unit origin=PLUSEQ
          VAR IR_TEMPORARY_VARIABLE val tmp0_this: B
            GET_VAR '<receiver: plusAssign(B) on B: Unit>' type=B origin=null
          CALL '<set-s>(Int): Unit' type=kotlin.Unit origin=PLUSEQ
            $this: GET_VAR 'tmp0_this: B' type=B origin=null
            <set-?>: CALL 'plus(Int): Int' type=kotlin.Int origin=PLUSEQ
              $this: CALL '<get-s>(): Int' type=kotlin.Int origin=PLUSEQ
                $this: GET_VAR 'tmp0_this: B' type=B origin=null
              other: CALL '<get-s>(): Int' type=kotlin.Int origin=GET_PROPERTY
                $this: GET_VAR 'value-parameter b: B' type=B origin=null
  FUN public fun Host.test3(v: B): kotlin.Unit
    BLOCK_BODY
      CALL 'plusAssign(B) on B: Unit' type=kotlin.Unit origin=PLUSEQ
        $this: GET_VAR '<receiver: test3(B) on Host: Unit>' 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'
