FILE: boundSmartcastWithProjection.kt public final class Inv : R|kotlin/Any| { public constructor(data: R|T|): R|Inv| { super() } public final val data: R|T| = R|/data| public get(): R|T| } public final fun test1(x: R|Inv|): R|kotlin/Unit| { lval y: R|kotlin/String?| = R|/x|.R|SubstitutionOverride| when (R|/y|) { ($subj$ is R|kotlin/String|) -> { R|/x|.R|SubstitutionOverride|.R|kotlin/String.length| } } } public final fun test2(x: R|Inv|): R|kotlin/Unit| { lval y: R|kotlin/Any?| = R|/x|.R|SubstitutionOverride| when (R|/y|) { ($subj$ is R|kotlin/String|) -> { R|/x|.R|SubstitutionOverride|.R|kotlin/String.length| } } }