object A {
  private constructor() /* primary */ {
    super/*Any*/()
    /* <init>() */

  }

}

fun testWithSubject(x: Any?): String {
  return { // BLOCK
    val tmp_0: Any? = x
    when {
      EQEQ(arg0 = tmp_0, arg1 = null) -> "null"
      EQEQ(arg0 = tmp_0, arg1 = A) -> "A"
      tmp_0 is String -> "String"
      tmp_0 !is Number -> "!Number"
      setOf<Nothing>().contains<Number>(element = tmp_0 /*as Number */) -> "nothingness?"
      else -> "something"
    }
  }
}

fun test(x: Any?): String {
  return when {
    EQEQ(arg0 = x, arg1 = null) -> "null"
    EQEQ(arg0 = x, arg1 = A) -> "A"
    x is String -> "String"
    x !is Number -> "!Number"
    setOf<Nothing>().contains<Number>(element = x /*as Number */) -> "nothingness?"
    else -> "something"
  }
}

fun testComma(x: Int): String {
  return { // BLOCK
    val tmp_1: Int = x
    when {
      when {
        when {
          EQEQ(arg0 = tmp_1, arg1 = 1) -> true
          else -> EQEQ(arg0 = tmp_1, arg1 = 2)
        } -> true
        else -> when {
          EQEQ(arg0 = tmp_1, arg1 = 3) -> true
          else -> EQEQ(arg0 = tmp_1, arg1 = 4)
        }
      } -> "1234"
      when {
        EQEQ(arg0 = tmp_1, arg1 = 5) -> true
        else -> when {
          EQEQ(arg0 = tmp_1, arg1 = 6) -> true
          else -> EQEQ(arg0 = tmp_1, arg1 = 7)
        }
      } -> "567"
      when {
        EQEQ(arg0 = tmp_1, arg1 = 8) -> true
        else -> EQEQ(arg0 = tmp_1, arg1 = 9)
      } -> "89"
      else -> "?"
    }
  }
}

