// FIR_IDENTICAL
val p: Any? = null

fun foo(): Any? = null

fun test1(a: Any?, b: Any) = a ?: b

fun test2(a: String?, b: Any) = a ?: b

fun test3(a: Any?, b: Any?): String {
    if (b !is String) return ""
    if (a !is String?) return ""
    return a ?: b
}

fun test4(x: Any) = p ?: x

fun test5(x: Any) = foo() ?: x
