FILE: unstableSmartCastOnSafeCallArgument.kt public abstract class Foo : R|kotlin/Any| { public constructor(): R|Foo| { super() } public abstract val bar: R|Bar?| public get(): R|Bar?| } public abstract class Bar : R|kotlin/Any| { public constructor(): R|Bar| { super() } public abstract val buz: R|Buz?| public get(): R|Buz?| } public final class Buz : R|kotlin/Any| { public constructor(): R|Buz| { super() } } public final fun takesNullable(b: R|Buz?|): R|kotlin/Unit| { } public final fun takesNonNull(b: R|Buz|): R|kotlin/Unit| { } public final fun foo(foo: R|Foo|): R|kotlin/Unit| { when () { !=(R|/foo|.R|/Foo.bar|?.{ $subj$.R|/Bar.buz| }, Null(null)) -> { R|/takesNullable|(R|/foo|.R|/Foo.bar|?.{ $subj$.R|/Bar.buz| }) R|/takesNonNull#|(R|/foo|.R|/Foo.bar|?.{ $subj$.R|/Bar.buz| }) } } }