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 tmp0_safe_receiver: Any? = y
      when {
        EQEQ(arg0 = tmp0_safe_receiver, arg1 = null) -> null
        else -> tmp0_safe_receiver /*as Float */.toDouble()
      }
    })
    else -> false
  }
}

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