FILE /whileDoWhile.kt
  FUN public fun test(): kotlin.Unit
    BLOCK_BODY
      VAR var x: kotlin.Int
        CONST Int type=kotlin.Int value='0'
      WHILE label=null operator=WHILE_LOOP
        condition: CALL 'LT0(Int): Boolean' type=kotlin.Boolean operator=LT
          arg0: CALL 'compareTo(Int): Int' type=kotlin.Int operator=LT
            $this: GET_VAR 'x: Int' type=kotlin.Int operator=null
            other: CONST Int type=kotlin.Int value='0'
      WHILE label=null operator=WHILE_LOOP
        condition: CALL 'LT0(Int): Boolean' type=kotlin.Boolean operator=LT
          arg0: CALL 'compareTo(Int): Int' type=kotlin.Int operator=LT
            $this: GET_VAR 'x: Int' type=kotlin.Int operator=null
            other: CONST Int type=kotlin.Int value='5'
        body: BLOCK type=kotlin.Int operator=POSTFIX_INCR
          VAR val tmp0: kotlin.Int
            GET_VAR 'x: Int' type=kotlin.Int operator=POSTFIX_INCR
          SET_VAR 'x: Int' type=kotlin.Unit operator=POSTFIX_INCR
            CALL 'inc(): Int' type=kotlin.Int operator=POSTFIX_INCR
              $this: GET_VAR 'tmp0: Int' type=kotlin.Int operator=null
          GET_VAR 'tmp0: Int' type=kotlin.Int operator=null
      WHILE label=null operator=WHILE_LOOP
        condition: CALL 'LT0(Int): Boolean' type=kotlin.Boolean operator=LT
          arg0: CALL 'compareTo(Int): Int' type=kotlin.Int operator=LT
            $this: GET_VAR 'x: Int' type=kotlin.Int operator=null
            other: CONST Int type=kotlin.Int value='10'
        body: BLOCK type=kotlin.Int operator=null
          BLOCK type=kotlin.Int operator=POSTFIX_INCR
            VAR val tmp1: kotlin.Int
              GET_VAR 'x: Int' type=kotlin.Int operator=POSTFIX_INCR
            SET_VAR 'x: Int' type=kotlin.Unit operator=POSTFIX_INCR
              CALL 'inc(): Int' type=kotlin.Int operator=POSTFIX_INCR
                $this: GET_VAR 'tmp1: Int' type=kotlin.Int operator=null
            GET_VAR 'tmp1: Int' type=kotlin.Int operator=null
      DO_WHILE label=null operator=DO_WHILE_LOOP
        condition: CALL 'LT0(Int): Boolean' type=kotlin.Boolean operator=LT
          arg0: CALL 'compareTo(Int): Int' type=kotlin.Int operator=LT
            $this: GET_VAR 'x: Int' type=kotlin.Int operator=null
            other: CONST Int type=kotlin.Int value='0'
      DO_WHILE label=null operator=DO_WHILE_LOOP
        body: BLOCK type=kotlin.Int operator=POSTFIX_INCR
          VAR val tmp2: kotlin.Int
            GET_VAR 'x: Int' type=kotlin.Int operator=POSTFIX_INCR
          SET_VAR 'x: Int' type=kotlin.Unit operator=POSTFIX_INCR
            CALL 'inc(): Int' type=kotlin.Int operator=POSTFIX_INCR
              $this: GET_VAR 'tmp2: Int' type=kotlin.Int operator=null
          GET_VAR 'tmp2: Int' type=kotlin.Int operator=null
        condition: CALL 'LT0(Int): Boolean' type=kotlin.Boolean operator=LT
          arg0: CALL 'compareTo(Int): Int' type=kotlin.Int operator=LT
            $this: GET_VAR 'x: Int' type=kotlin.Int operator=null
            other: CONST Int type=kotlin.Int value='15'
      DO_WHILE label=null operator=DO_WHILE_LOOP
        body: BLOCK type=kotlin.Unit operator=null
          BLOCK type=kotlin.Int operator=POSTFIX_INCR
            VAR val tmp3: kotlin.Int
              GET_VAR 'x: Int' type=kotlin.Int operator=POSTFIX_INCR
            SET_VAR 'x: Int' type=kotlin.Unit operator=POSTFIX_INCR
              CALL 'inc(): Int' type=kotlin.Int operator=POSTFIX_INCR
                $this: GET_VAR 'tmp3: Int' type=kotlin.Int operator=null
            GET_VAR 'tmp3: Int' type=kotlin.Int operator=null
        condition: CALL 'LT0(Int): Boolean' type=kotlin.Boolean operator=LT
          arg0: CALL 'compareTo(Int): Int' type=kotlin.Int operator=LT
            $this: GET_VAR 'x: Int' type=kotlin.Int operator=null
            other: CONST Int type=kotlin.Int value='20'
  FUN public fun testSmartcastInCondition(): kotlin.Unit
    BLOCK_BODY
      VAR val a: kotlin.Any? = null
        CONST Null type=kotlin.Nothing? value='null'
      WHEN type=kotlin.Unit operator=IF
        if: TYPE_OP operator=INSTANCEOF typeOperand=kotlin.Boolean
          GET_VAR 'a: Any?' type=kotlin.Any? operator=null
        then: BLOCK type=kotlin.Unit operator=null
          WHILE label=null operator=WHILE_LOOP
            condition: TYPE_OP operator=IMPLICIT_CAST typeOperand=kotlin.Boolean
              GET_VAR 'a: Any?' type=kotlin.Any? operator=null
            body: BLOCK type=kotlin.Unit operator=null
          DO_WHILE label=null operator=DO_WHILE_LOOP
            body: BLOCK type=kotlin.Unit operator=null
            condition: TYPE_OP operator=IMPLICIT_CAST typeOperand=kotlin.Boolean
              GET_VAR 'a: Any?' type=kotlin.Any? operator=null
