fun <T : Any?> elvisLike(x: T, y: (T & Any)): (T & Any) {
  return { // BLOCK
    val tmp_0: T = x
    when {
      EQEQ(arg0 = tmp_0, arg1 = null) -> y
      else -> tmp_0
    }
  }
}

fun runMe() {
  elvisLike<String>(x = "", y = "").<get-length>() /*~> Unit */
  elvisLike<String?>(x = null, y = "").<get-length>() /*~> Unit */
  elvisLike<String>(x = "", y = "").<get-length>() /*~> Unit */
  elvisLike<String?>(x = null, y = "").<get-length>() /*~> Unit */
}
