fun testEmpty(ss: List<String>) {
  { // BLOCK
    val <iterator>: Iterator<String> = ss.iterator()
    while (<iterator>.hasNext()) { // BLOCK
      val s: String = <iterator>.next()
      { // BLOCK
      }
    }
  }
}

fun testIterable(ss: List<String>) {
  { // BLOCK
    val <iterator>: Iterator<String> = ss.iterator()
    while (<iterator>.hasNext()) { // BLOCK
      val s: String = <iterator>.next()
      println(message = s)
    }
  }
}

fun testDestructuring(pp: List<Pair<Int, String>>) {
  { // BLOCK
    val <iterator>: Iterator<Pair<Int, String>> = pp.iterator()
    while (<iterator>.hasNext()) { // BLOCK
      val <destruct>: Pair<Int, String> = <iterator>.next()
      val i: Int = <destruct>.component1()
      val s: String = <destruct>.component2()
      { // BLOCK
        println(message = i)
        println(message = s)
      }
    }
  }
}

fun testRange() {
  { // BLOCK
    val <iterator>: IntIterator = 1.rangeTo(other = 10).iterator()
    while (<iterator>.hasNext()) { // BLOCK
      val i: Int = <iterator>.next()
      { // BLOCK
      }
    }
  }
}

