fun test() {
  var x: Int = 0
  while (less(arg0 = x, arg1 = 0))
  while (less(arg0 = x, arg1 = 5)) { // BLOCK
    val tmp0: Int = x
    x = tmp0.inc()
    tmp0
  } /*~> Unit */
  while (less(arg0 = x, arg1 = 10)) { // BLOCK
    { // BLOCK
      val tmp1: Int = x
      x = tmp1.inc()
      tmp1
    } /*~> Unit */
  }
  { // BLOCK
    do    while (less(arg0 = x, arg1 = 0))
  }
  { // BLOCK
    do{ // BLOCK
      val tmp2: Int = x
      x = tmp2.inc()
      tmp2
    } /*~> Unit */    while (less(arg0 = x, arg1 = 15))
  }
  { // BLOCK
    do// COMPOSITE {
    { // BLOCK
      val tmp3: Int = x
      x = tmp3.inc()
      tmp3
    } /*~> Unit */
    // }    while (less(arg0 = x, arg1 = 20))
  }
}

fun testSmartcastInCondition() {
  val a: Any? = null
  when {
    a is Boolean -> { // BLOCK
      while (a /*as Boolean */) { // BLOCK
      }
      { // BLOCK
        do// COMPOSITE {
        // }        while (a /*as Boolean */)
      }
    }
  }
}
