// RUN_PIPELINE_TILL: BACKEND
// DUMP_CFG
interface A {
    fun foo(): A
    fun bar(x: String): A
}

interface B {
    val foo: B
    val bar: B
}

fun test_1(x: A?) {
    x?.foo()?.bar("")
}

fun test_2(x: B?) {
    x?.foo?.bar
}

fun test_3(x: A?, y: String?) {
    if (x?.bar(y as String) != null) {
        y.length
    }
}

/* GENERATED_FIR_TAGS: asExpression, equalityExpression, functionDeclaration, ifExpression, interfaceDeclaration,
nullableType, propertyDeclaration, safeCall, smartcast, stringLiteral */
