fun testDD(x: Double?, y: Double?): Boolean {
  return ieee754equals(arg0 = x, arg1 = y)
}

fun testDF(x: Double?, y: Any?): Boolean {
  return when {
    y is Float? -> ieee754equals(arg0 = x, arg1 = { // BLOCK
      val tmp_0: Float? = y /*as Float? */
      when {
        EQEQ(arg0 = tmp_0, arg1 = null) -> null
        else -> tmp_0.toDouble()
      }
    })
    else -> false
  }
}

fun testDI(x: Double?, y: Any?): Boolean {
  return when {
    y is Int? -> ieee754equals(arg0 = x, arg1 = { // BLOCK
      val tmp_1: Int? = y /*as Int? */
      when {
        EQEQ(arg0 = tmp_1, arg1 = null) -> null
        else -> tmp_1.toDouble()
      }
    })
    else -> false
  }
}

fun testDI2(x: Any?, y: Any?): Boolean {
  return when {
    when {
      x is Int? -> y is Double
      else -> false
    } -> ieee754equals(arg0 = { // BLOCK
      val tmp_2: Int? = x /*as Int? */
      when {
        EQEQ(arg0 = tmp_2, arg1 = null) -> null
        else -> tmp_2.toDouble()
      }
    }, arg1 = y /*as Double? */)
    else -> false
  }
}

