FILE fqName:<root> fileName:/whileDoWhile.kt
  FUN name:test visibility:public modality:FINAL <> () returnType:kotlin.Unit
    BLOCK_BODY
      VAR name:x type:kotlin.Int [var]
        CONST Int type=kotlin.Int value=0
      WHILE label=null origin=WHILE_LOOP
        condition: CALL 'public final fun less (arg0: kotlin.Int, arg1: kotlin.Int): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=LT
          arg0: GET_VAR 'var x: kotlin.Int [var] declared in <root>.test' type=kotlin.Int origin=null
          arg1: CONST Int type=kotlin.Int value=0
        body: BLOCK type=kotlin.Unit origin=null
      WHILE label=null origin=WHILE_LOOP
        condition: CALL 'public final fun less (arg0: kotlin.Int, arg1: kotlin.Int): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=LT
          arg0: GET_VAR 'var x: kotlin.Int [var] declared in <root>.test' type=kotlin.Int origin=null
          arg1: CONST Int type=kotlin.Int value=5
        body: BLOCK type=kotlin.Int origin=POSTFIX_INCR
          VAR IR_TEMPORARY_VARIABLE name:tmp_0 type:kotlin.Int [val]
            GET_VAR 'var x: kotlin.Int [var] declared in <root>.test' type=kotlin.Int origin=null
          SET_VAR 'var x: kotlin.Int [var] declared in <root>.test' type=kotlin.Unit origin=POSTFIX_INCR
            CALL 'public final fun inc (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null
              $this: GET_VAR 'val tmp_0: kotlin.Int [val] declared in <root>.test' type=kotlin.Int origin=null
          GET_VAR 'val tmp_0: kotlin.Int [val] declared in <root>.test' type=kotlin.Int origin=null
      WHILE label=null origin=WHILE_LOOP
        condition: CALL 'public final fun less (arg0: kotlin.Int, arg1: kotlin.Int): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=LT
          arg0: GET_VAR 'var x: kotlin.Int [var] declared in <root>.test' type=kotlin.Int origin=null
          arg1: CONST Int type=kotlin.Int value=10
        body: BLOCK type=kotlin.Int origin=POSTFIX_INCR
          VAR IR_TEMPORARY_VARIABLE name:tmp_1 type:kotlin.Int [val]
            GET_VAR 'var x: kotlin.Int [var] declared in <root>.test' type=kotlin.Int origin=null
          SET_VAR 'var x: kotlin.Int [var] declared in <root>.test' type=kotlin.Unit origin=POSTFIX_INCR
            CALL 'public final fun inc (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null
              $this: GET_VAR 'val tmp_1: kotlin.Int [val] declared in <root>.test' type=kotlin.Int origin=null
          GET_VAR 'val tmp_1: kotlin.Int [val] declared in <root>.test' type=kotlin.Int origin=null
      BLOCK type=kotlin.Unit origin=null
        DO_WHILE label=null origin=DO_WHILE_LOOP
          body: COMPOSITE type=kotlin.Unit origin=DO_WHILE_LOOP
          condition: CALL 'public final fun less (arg0: kotlin.Int, arg1: kotlin.Int): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=LT
            arg0: GET_VAR 'var x: kotlin.Int [var] declared in <root>.test' type=kotlin.Int origin=null
            arg1: CONST Int type=kotlin.Int value=0
      BLOCK type=kotlin.Unit origin=null
        DO_WHILE label=null origin=DO_WHILE_LOOP
          body: BLOCK type=kotlin.Int origin=POSTFIX_INCR
            VAR IR_TEMPORARY_VARIABLE name:tmp_2 type:kotlin.Int [val]
              GET_VAR 'var x: kotlin.Int [var] declared in <root>.test' type=kotlin.Int origin=null
            SET_VAR 'var x: kotlin.Int [var] declared in <root>.test' type=kotlin.Unit origin=POSTFIX_INCR
              CALL 'public final fun inc (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null
                $this: GET_VAR 'val tmp_2: kotlin.Int [val] declared in <root>.test' type=kotlin.Int origin=null
            GET_VAR 'val tmp_2: kotlin.Int [val] declared in <root>.test' type=kotlin.Int origin=null
          condition: CALL 'public final fun less (arg0: kotlin.Int, arg1: kotlin.Int): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=LT
            arg0: GET_VAR 'var x: kotlin.Int [var] declared in <root>.test' type=kotlin.Int origin=null
            arg1: CONST Int type=kotlin.Int value=15
      BLOCK type=kotlin.Unit origin=null
        DO_WHILE label=null origin=DO_WHILE_LOOP
          body: COMPOSITE type=kotlin.Unit origin=DO_WHILE_LOOP
            VAR IR_TEMPORARY_VARIABLE name:tmp_3 type:kotlin.Int [val]
              GET_VAR 'var x: kotlin.Int [var] declared in <root>.test' type=kotlin.Int origin=null
            SET_VAR 'var x: kotlin.Int [var] declared in <root>.test' type=kotlin.Unit origin=POSTFIX_INCR
              CALL 'public final fun inc (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null
                $this: GET_VAR 'val tmp_3: kotlin.Int [val] declared in <root>.test' type=kotlin.Int origin=null
            GET_VAR 'val tmp_3: kotlin.Int [val] declared in <root>.test' type=kotlin.Int origin=null
          condition: CALL 'public final fun less (arg0: kotlin.Int, arg1: kotlin.Int): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=LT
            arg0: GET_VAR 'var x: kotlin.Int [var] declared in <root>.test' type=kotlin.Int origin=null
            arg1: CONST Int type=kotlin.Int value=20
  FUN name:testSmartcastInCondition visibility:public modality:FINAL <> () returnType:kotlin.Unit
    BLOCK_BODY
      VAR name:a type:kotlin.Any? [val]
        CONST Null type=kotlin.Nothing? value=null
      WHEN type=kotlin.Unit origin=IF
        BRANCH
          if: TYPE_OP type=kotlin.Boolean origin=INSTANCEOF typeOperand=kotlin.Boolean
            GET_VAR 'val a: kotlin.Any? [val] declared in <root>.testSmartcastInCondition' type=kotlin.Any? origin=null
          then: BLOCK type=kotlin.Unit origin=null
            WHILE label=null origin=WHILE_LOOP
              condition: TYPE_OP type=kotlin.Boolean origin=IMPLICIT_CAST typeOperand=kotlin.Boolean
                GET_VAR 'val a: kotlin.Any? [val] declared in <root>.testSmartcastInCondition' type=kotlin.Any? origin=null
              body: BLOCK type=kotlin.Unit origin=null
            BLOCK type=kotlin.Unit origin=null
              DO_WHILE label=null origin=DO_WHILE_LOOP
                body: COMPOSITE type=kotlin.Unit origin=DO_WHILE_LOOP
                condition: TYPE_OP type=kotlin.Boolean origin=IMPLICIT_CAST typeOperand=kotlin.Boolean
                  GET_VAR 'val a: kotlin.Any? [val] declared in <root>.testSmartcastInCondition' type=kotlin.Any? origin=null
