// FIR_COMPARISON
interface A {
fun foo()
}
interface B : A {
fun bar()
}
interface C
interface D : A
fun test(a: A?) {
if (a != null && a is B?) {
a.bar()
}
if (a is B && a is C) {
a.foo()
}
if (a is B? && a is C?) {
a?.bar()
}
a?.foo()
if (a is B? && a is C?) {
a?.foo()
}
if (a is B && a is D) {
//when it's resolved, the message should be 'Smart cast to A'
a.foo
}
}