Analysis attempt #0
KT element: KtNameReferenceExpression
KT element text:
obj
FIR element: FirPropertyAccessExpressionImpl
FIR source kind: KtRealSourceElementKind

FIR element rendered:
R|<local>/obj|

FIR FILE:
FILE: [ResolvedTo(IMPORTS)] simpleDataFlow.kt
    public final [ResolvedTo(ANNOTATION_ARGUMENTS)] [PartialBodyAnalysisStateKey=1(1/3) #1] fun test([ResolvedTo(ANNOTATION_ARGUMENTS)] obj: R|kotlin/Any|): R|kotlin/Unit| {
        when () {
            (R|<local>/obj| !is R|kotlin/String|) ->  {
                ^test Unit
            }
        }

        consume#(obj#)
        obj#.toString#()
    }
    public? final? [ResolvedTo(RAW_FIR)] fun <[ResolvedTo(RAW_FIR)] T : CharSequence> consume([ResolvedTo(RAW_FIR)] obj: T): R|kotlin/Unit| { LAZY_BLOCK }

=====

Analysis attempt #1
KT element: KtValueArgument
KT element text:
obj
FIR element: FirSmartCastExpressionImpl
FIR source kind: SmartCastExpression

FIR element rendered:
R|<local>/obj|

FIR FILE:
FILE: [ResolvedTo(IMPORTS)] simpleDataFlow.kt
    public final [ResolvedTo(ANNOTATION_ARGUMENTS)] [PartialBodyAnalysisStateKey=2(2/3) #2] fun test([ResolvedTo(ANNOTATION_ARGUMENTS)] obj: R|kotlin/Any|): R|kotlin/Unit| {
        when () {
            (R|<local>/obj| !is R|kotlin/String|) ->  {
                ^test Unit
            }
        }

        R|/consume|<R|kotlin/String|>(R|<local>/obj|)
        obj#.toString#()
    }
    public final [ResolvedTo(STATUS)] fun <[ResolvedTo(STATUS)] T : R|kotlin/CharSequence|> consume([ResolvedTo(STATUS)] obj: R|T|): R|kotlin/Unit| { LAZY_BLOCK }