RAW_FIR: FILE: [ResolvedTo(RAW_FIR)] common.kt public open expect [ResolvedTo(RAW_FIR)] class Base<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { public? expect [ResolvedTo(RAW_FIR)] [ContainingClassKey=Base] constructor<[ResolvedTo(RAW_FIR)] T>(): R|Base| public? final? expect [ResolvedTo(RAW_FIR)] fun existingMethodInBase([ResolvedTo(RAW_FIR)] param: T): R|kotlin/Unit| } public open [ResolvedTo(RAW_FIR)] class Transitive : Base { public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Transitive] constructor(): R|Transitive| { LAZY_super> } } public open expect [ResolvedTo(RAW_FIR)] class Foo : Transitive { public? final? expect [ResolvedTo(RAW_FIR)] fun existingMethod(): R|kotlin/Unit| public? final? expect [ResolvedTo(RAW_FIR)] val existingParam: Int public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Foo] get(): Int } FILE: [ResolvedTo(RAW_FIR)] jvm.kt public open actual [ResolvedTo(RAW_FIR)] class Base<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Base] constructor<[ResolvedTo(RAW_FIR)] T>(): R|Base| { LAZY_super } public? final? actual [ResolvedTo(RAW_FIR)] fun existingMethodInBase([ResolvedTo(RAW_FIR)] param: T): R|kotlin/Unit| { LAZY_BLOCK } public? open [ResolvedTo(RAW_FIR)] fun injected([ResolvedTo(RAW_FIR)] param: T): Any { LAZY_BLOCK } } public open actual [ResolvedTo(RAW_FIR)] class Foo : Transitive { public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Foo] constructor(): R|Foo| { LAZY_super } public? final? actual [ResolvedTo(RAW_FIR)] fun existingMethod(): R|kotlin/Unit| { LAZY_BLOCK } public? final? actual [ResolvedTo(RAW_FIR)] val existingParam: Int = LAZY_EXPRESSION public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Foo] get(): Int public? open? override [ResolvedTo(RAW_FIR)] fun injected([ResolvedTo(RAW_FIR)] param: String): String { LAZY_BLOCK } } IMPORTS: FILE: [ResolvedTo(RAW_FIR)] common.kt public open expect [ResolvedTo(RAW_FIR)] class Base<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { public? expect [ResolvedTo(RAW_FIR)] [ContainingClassKey=Base] constructor<[ResolvedTo(RAW_FIR)] T>(): R|Base| public? final? expect [ResolvedTo(RAW_FIR)] fun existingMethodInBase([ResolvedTo(RAW_FIR)] param: T): R|kotlin/Unit| } public open [ResolvedTo(RAW_FIR)] class Transitive : Base { public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Transitive] constructor(): R|Transitive| { LAZY_super> } } public open expect [ResolvedTo(RAW_FIR)] class Foo : Transitive { public? final? expect [ResolvedTo(RAW_FIR)] fun existingMethod(): R|kotlin/Unit| public? final? expect [ResolvedTo(RAW_FIR)] val existingParam: Int public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Foo] get(): Int } FILE: [ResolvedTo(IMPORTS)] jvm.kt public open actual [ResolvedTo(RAW_FIR)] class Base<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Base] constructor<[ResolvedTo(RAW_FIR)] T>(): R|Base| { LAZY_super } public? final? actual [ResolvedTo(RAW_FIR)] fun existingMethodInBase([ResolvedTo(RAW_FIR)] param: T): R|kotlin/Unit| { LAZY_BLOCK } public? open [ResolvedTo(RAW_FIR)] fun injected([ResolvedTo(RAW_FIR)] param: T): Any { LAZY_BLOCK } } public open actual [ResolvedTo(RAW_FIR)] class Foo : Transitive { public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Foo] constructor(): R|Foo| { LAZY_super } public? final? actual [ResolvedTo(RAW_FIR)] fun existingMethod(): R|kotlin/Unit| { LAZY_BLOCK } public? final? actual [ResolvedTo(RAW_FIR)] val existingParam: Int = LAZY_EXPRESSION public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Foo] get(): Int public? open? override [ResolvedTo(RAW_FIR)] fun injected([ResolvedTo(RAW_FIR)] param: String): String { LAZY_BLOCK } } COMPILER_REQUIRED_ANNOTATIONS: FILE: [ResolvedTo(RAW_FIR)] common.kt public open expect [ResolvedTo(RAW_FIR)] class Base<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { public? expect [ResolvedTo(RAW_FIR)] [ContainingClassKey=Base] constructor<[ResolvedTo(RAW_FIR)] T>(): R|Base| public? final? expect [ResolvedTo(RAW_FIR)] fun existingMethodInBase([ResolvedTo(RAW_FIR)] param: T): R|kotlin/Unit| } public open [ResolvedTo(RAW_FIR)] class Transitive : Base { public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Transitive] constructor(): R|Transitive| { LAZY_super> } } public open expect [ResolvedTo(RAW_FIR)] class Foo : Transitive { public? final? expect [ResolvedTo(RAW_FIR)] fun existingMethod(): R|kotlin/Unit| public? final? expect [ResolvedTo(RAW_FIR)] val existingParam: Int public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Foo] get(): Int } FILE: [ResolvedTo(IMPORTS)] jvm.kt public open actual [ResolvedTo(RAW_FIR)] class Base<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Base] constructor<[ResolvedTo(RAW_FIR)] T>(): R|Base| { LAZY_super } public? final? actual [ResolvedTo(RAW_FIR)] fun existingMethodInBase([ResolvedTo(RAW_FIR)] param: T): R|kotlin/Unit| { LAZY_BLOCK } public? open [ResolvedTo(RAW_FIR)] fun injected([ResolvedTo(RAW_FIR)] param: T): Any { LAZY_BLOCK } } public open actual [ResolvedTo(RAW_FIR)] class Foo : Transitive { public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Foo] constructor(): R|Foo| { LAZY_super } public? final? actual [ResolvedTo(RAW_FIR)] fun existingMethod(): R|kotlin/Unit| { LAZY_BLOCK } public? final? actual [ResolvedTo(RAW_FIR)] val existingParam: Int = LAZY_EXPRESSION public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Foo] get(): Int public? open? override [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] fun injected([ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] param: String): String { LAZY_BLOCK } } COMPANION_GENERATION: FILE: [ResolvedTo(RAW_FIR)] common.kt public open expect [ResolvedTo(RAW_FIR)] class Base<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { public? expect [ResolvedTo(RAW_FIR)] [ContainingClassKey=Base] constructor<[ResolvedTo(RAW_FIR)] T>(): R|Base| public? final? expect [ResolvedTo(RAW_FIR)] fun existingMethodInBase([ResolvedTo(RAW_FIR)] param: T): R|kotlin/Unit| } public open [ResolvedTo(RAW_FIR)] class Transitive : Base { public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Transitive] constructor(): R|Transitive| { LAZY_super> } } public open expect [ResolvedTo(RAW_FIR)] class Foo : Transitive { public? final? expect [ResolvedTo(RAW_FIR)] fun existingMethod(): R|kotlin/Unit| public? final? expect [ResolvedTo(RAW_FIR)] val existingParam: Int public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Foo] get(): Int } FILE: [ResolvedTo(IMPORTS)] jvm.kt public open actual [ResolvedTo(RAW_FIR)] class Base<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Base] constructor<[ResolvedTo(RAW_FIR)] T>(): R|Base| { LAZY_super } public? final? actual [ResolvedTo(RAW_FIR)] fun existingMethodInBase([ResolvedTo(RAW_FIR)] param: T): R|kotlin/Unit| { LAZY_BLOCK } public? open [ResolvedTo(RAW_FIR)] fun injected([ResolvedTo(RAW_FIR)] param: T): Any { LAZY_BLOCK } } public open actual [ResolvedTo(RAW_FIR)] class Foo : Transitive { public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Foo] constructor(): R|Foo| { LAZY_super } public? final? actual [ResolvedTo(RAW_FIR)] fun existingMethod(): R|kotlin/Unit| { LAZY_BLOCK } public? final? actual [ResolvedTo(RAW_FIR)] val existingParam: Int = LAZY_EXPRESSION public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Foo] get(): Int public? open? override [ResolvedTo(COMPANION_GENERATION)] fun injected([ResolvedTo(COMPANION_GENERATION)] param: String): String { LAZY_BLOCK } } SUPER_TYPES: FILE: [ResolvedTo(IMPORTS)] common.kt public open expect [ResolvedTo(SUPER_TYPES)] class Base<[ResolvedTo(SUPER_TYPES)] T> : R|kotlin/Any| { public? expect [ResolvedTo(RAW_FIR)] [ContainingClassKey=Base] constructor<[ResolvedTo(SUPER_TYPES)] T>(): R|Base| public? final? expect [ResolvedTo(RAW_FIR)] fun existingMethodInBase([ResolvedTo(RAW_FIR)] param: T): R|kotlin/Unit| } public open [ResolvedTo(SUPER_TYPES)] class Transitive : R|Base| { public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Transitive] constructor(): R|Transitive| { LAZY_super> } } public open expect [ResolvedTo(RAW_FIR)] class Foo : Transitive { public? final? expect [ResolvedTo(RAW_FIR)] fun existingMethod(): R|kotlin/Unit| public? final? expect [ResolvedTo(RAW_FIR)] val existingParam: Int public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Foo] get(): Int } FILE: [ResolvedTo(IMPORTS)] jvm.kt public open actual [ResolvedTo(SUPER_TYPES)] class Base<[ResolvedTo(SUPER_TYPES)] T> : R|kotlin/Any| { public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Base] constructor<[ResolvedTo(SUPER_TYPES)] T>(): R|Base| { LAZY_super } public? final? actual [ResolvedTo(RAW_FIR)] fun existingMethodInBase([ResolvedTo(RAW_FIR)] param: T): R|kotlin/Unit| { LAZY_BLOCK } public? open [ResolvedTo(RAW_FIR)] fun injected([ResolvedTo(RAW_FIR)] param: T): Any { LAZY_BLOCK } } public open actual [ResolvedTo(SUPER_TYPES)] class Foo : R|Transitive| { public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Foo] constructor(): R|Foo| { LAZY_super } public? final? actual [ResolvedTo(RAW_FIR)] fun existingMethod(): R|kotlin/Unit| { LAZY_BLOCK } public? final? actual [ResolvedTo(RAW_FIR)] val existingParam: Int = LAZY_EXPRESSION public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Foo] get(): Int public? open? override [ResolvedTo(SUPER_TYPES)] fun injected([ResolvedTo(SUPER_TYPES)] param: String): String { LAZY_BLOCK } } TYPES: FILE: [ResolvedTo(IMPORTS)] common.kt public open expect [ResolvedTo(SUPER_TYPES)] class Base<[ResolvedTo(SUPER_TYPES)] T> : R|kotlin/Any| { public? expect [ResolvedTo(RAW_FIR)] [ContainingClassKey=Base] constructor<[ResolvedTo(SUPER_TYPES)] T>(): R|Base| public? final? expect [ResolvedTo(RAW_FIR)] fun existingMethodInBase([ResolvedTo(RAW_FIR)] param: T): R|kotlin/Unit| } public open [ResolvedTo(SUPER_TYPES)] class Transitive : R|Base| { public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Transitive] constructor(): R|Transitive| { LAZY_super> } } public open expect [ResolvedTo(RAW_FIR)] class Foo : Transitive { public? final? expect [ResolvedTo(RAW_FIR)] fun existingMethod(): R|kotlin/Unit| public? final? expect [ResolvedTo(RAW_FIR)] val existingParam: Int public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Foo] get(): Int } FILE: [ResolvedTo(IMPORTS)] jvm.kt public open actual [ResolvedTo(SUPER_TYPES)] class Base<[ResolvedTo(SUPER_TYPES)] T> : R|kotlin/Any| { public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Base] constructor<[ResolvedTo(SUPER_TYPES)] T>(): R|Base| { LAZY_super } public? final? actual [ResolvedTo(RAW_FIR)] fun existingMethodInBase([ResolvedTo(RAW_FIR)] param: T): R|kotlin/Unit| { LAZY_BLOCK } public? open [ResolvedTo(RAW_FIR)] fun injected([ResolvedTo(RAW_FIR)] param: T): Any { LAZY_BLOCK } } public open actual [ResolvedTo(TYPES)] class Foo : R|Transitive| { public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Foo] constructor(): R|Foo| { LAZY_super } public? final? actual [ResolvedTo(RAW_FIR)] fun existingMethod(): R|kotlin/Unit| { LAZY_BLOCK } public? final? actual [ResolvedTo(RAW_FIR)] val existingParam: Int = LAZY_EXPRESSION public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Foo] get(): Int public? open? override [ResolvedTo(TYPES)] fun injected([ResolvedTo(TYPES)] param: R|kotlin/String|): R|kotlin/String| { LAZY_BLOCK } } STATUS: FILE: [ResolvedTo(IMPORTS)] common.kt public open expect [ResolvedTo(STATUS)] class Base<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { public expect [ResolvedTo(STATUS)] [ContainingClassKey=Base] constructor<[ResolvedTo(STATUS)] T>(): R|Base| public final expect [ResolvedTo(STATUS)] fun existingMethodInBase([ResolvedTo(STATUS)] param: R|T|): R|kotlin/Unit| } public open [ResolvedTo(STATUS)] class Transitive : R|Base| { public [ResolvedTo(STATUS)] [ContainingClassKey=Transitive] constructor(): R|Transitive| { LAZY_super|> } } public open expect [ResolvedTo(RAW_FIR)] class Foo : Transitive { public? final? expect [ResolvedTo(RAW_FIR)] fun existingMethod(): R|kotlin/Unit| public? final? expect [ResolvedTo(RAW_FIR)] val existingParam: Int public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Foo] get(): Int } FILE: [ResolvedTo(IMPORTS)] jvm.kt public open actual [ResolvedTo(STATUS)] class Base<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { public [ResolvedTo(STATUS)] [ContainingClassKey=Base] constructor<[ResolvedTo(STATUS)] T>(): R|Base| { LAZY_super } public final actual [ResolvedTo(STATUS)] fun existingMethodInBase([ResolvedTo(STATUS)] param: R|T|): R|kotlin/Unit| { LAZY_BLOCK } public open [ResolvedTo(STATUS)] fun injected([ResolvedTo(STATUS)] param: R|T|): R|kotlin/Any| { LAZY_BLOCK } } public open actual [ResolvedTo(STATUS)] class Foo : R|Transitive| { public [ResolvedTo(STATUS)] [ContainingClassKey=Foo] constructor(): R|Foo| { LAZY_super } public final actual [ResolvedTo(STATUS)] fun existingMethod(): R|kotlin/Unit| { LAZY_BLOCK } public final actual [ResolvedTo(STATUS)] val existingParam: R|kotlin/Int| = LAZY_EXPRESSION public [ResolvedTo(STATUS)] [ContainingClassKey=Foo] get(): R|kotlin/Int| public open override [ResolvedTo(STATUS)] fun injected([ResolvedTo(STATUS)] param: R|kotlin/String|): R|kotlin/String| { LAZY_BLOCK } } EXPECT_ACTUAL_MATCHING: FILE: [ResolvedTo(IMPORTS)] common.kt public open expect [ResolvedTo(STATUS)] class Base<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { public expect [ResolvedTo(STATUS)] [ContainingClassKey=Base] constructor<[ResolvedTo(STATUS)] T>(): R|Base| public final expect [ResolvedTo(STATUS)] fun existingMethodInBase([ResolvedTo(STATUS)] param: R|T|): R|kotlin/Unit| } public open [ResolvedTo(STATUS)] class Transitive : R|Base| { public [ResolvedTo(STATUS)] [ContainingClassKey=Transitive] constructor(): R|Transitive| { LAZY_super|> } } public open expect [ResolvedTo(RAW_FIR)] class Foo : Transitive { public? final? expect [ResolvedTo(RAW_FIR)] fun existingMethod(): R|kotlin/Unit| public? final? expect [ResolvedTo(RAW_FIR)] val existingParam: Int public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Foo] get(): Int } FILE: [ResolvedTo(IMPORTS)] jvm.kt public open actual [ResolvedTo(STATUS)] class Base<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { public [ResolvedTo(STATUS)] [ContainingClassKey=Base] constructor<[ResolvedTo(STATUS)] T>(): R|Base| { LAZY_super } public final actual [ResolvedTo(STATUS)] fun existingMethodInBase([ResolvedTo(STATUS)] param: R|T|): R|kotlin/Unit| { LAZY_BLOCK } public open [ResolvedTo(STATUS)] fun injected([ResolvedTo(STATUS)] param: R|T|): R|kotlin/Any| { LAZY_BLOCK } } public open actual [ResolvedTo(STATUS)] class Foo : R|Transitive| { public [ResolvedTo(STATUS)] [ContainingClassKey=Foo] constructor(): R|Foo| { LAZY_super } public final actual [ResolvedTo(STATUS)] fun existingMethod(): R|kotlin/Unit| { LAZY_BLOCK } public final actual [ResolvedTo(STATUS)] val existingParam: R|kotlin/Int| = LAZY_EXPRESSION public [ResolvedTo(STATUS)] [ContainingClassKey=Foo] get(): R|kotlin/Int| public open override [ResolvedTo(EXPECT_ACTUAL_MATCHING)] fun injected([ResolvedTo(EXPECT_ACTUAL_MATCHING)] param: R|kotlin/String|): R|kotlin/String| { LAZY_BLOCK } } CONTRACTS: FILE: [ResolvedTo(IMPORTS)] common.kt public open expect [ResolvedTo(STATUS)] class Base<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { public expect [ResolvedTo(STATUS)] [ContainingClassKey=Base] constructor<[ResolvedTo(STATUS)] T>(): R|Base| public final expect [ResolvedTo(STATUS)] fun existingMethodInBase([ResolvedTo(STATUS)] param: R|T|): R|kotlin/Unit| } public open [ResolvedTo(STATUS)] class Transitive : R|Base| { public [ResolvedTo(STATUS)] [ContainingClassKey=Transitive] constructor(): R|Transitive| { LAZY_super|> } } public open expect [ResolvedTo(RAW_FIR)] class Foo : Transitive { public? final? expect [ResolvedTo(RAW_FIR)] fun existingMethod(): R|kotlin/Unit| public? final? expect [ResolvedTo(RAW_FIR)] val existingParam: Int public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Foo] get(): Int } FILE: [ResolvedTo(IMPORTS)] jvm.kt public open actual [ResolvedTo(STATUS)] class Base<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { public [ResolvedTo(STATUS)] [ContainingClassKey=Base] constructor<[ResolvedTo(STATUS)] T>(): R|Base| { LAZY_super } public final actual [ResolvedTo(STATUS)] fun existingMethodInBase([ResolvedTo(STATUS)] param: R|T|): R|kotlin/Unit| { LAZY_BLOCK } public open [ResolvedTo(STATUS)] fun injected([ResolvedTo(STATUS)] param: R|T|): R|kotlin/Any| { LAZY_BLOCK } } public open actual [ResolvedTo(STATUS)] class Foo : R|Transitive| { public [ResolvedTo(STATUS)] [ContainingClassKey=Foo] constructor(): R|Foo| { LAZY_super } public final actual [ResolvedTo(STATUS)] fun existingMethod(): R|kotlin/Unit| { LAZY_BLOCK } public final actual [ResolvedTo(STATUS)] val existingParam: R|kotlin/Int| = LAZY_EXPRESSION public [ResolvedTo(STATUS)] [ContainingClassKey=Foo] get(): R|kotlin/Int| public open override [ResolvedTo(CONTRACTS)] fun injected([ResolvedTo(CONTRACTS)] param: R|kotlin/String|): R|kotlin/String| { ^injected String() } } IMPLICIT_TYPES_BODY_RESOLVE: FILE: [ResolvedTo(IMPORTS)] common.kt public open expect [ResolvedTo(STATUS)] class Base<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { public expect [ResolvedTo(STATUS)] [ContainingClassKey=Base] constructor<[ResolvedTo(STATUS)] T>(): R|Base| public final expect [ResolvedTo(STATUS)] fun existingMethodInBase([ResolvedTo(STATUS)] param: R|T|): R|kotlin/Unit| } public open [ResolvedTo(STATUS)] class Transitive : R|Base| { public [ResolvedTo(STATUS)] [ContainingClassKey=Transitive] constructor(): R|Transitive| { LAZY_super|> } } public open expect [ResolvedTo(RAW_FIR)] class Foo : Transitive { public? final? expect [ResolvedTo(RAW_FIR)] fun existingMethod(): R|kotlin/Unit| public? final? expect [ResolvedTo(RAW_FIR)] val existingParam: Int public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Foo] get(): Int } FILE: [ResolvedTo(IMPORTS)] jvm.kt public open actual [ResolvedTo(STATUS)] class Base<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { public [ResolvedTo(STATUS)] [ContainingClassKey=Base] constructor<[ResolvedTo(STATUS)] T>(): R|Base| { LAZY_super } public final actual [ResolvedTo(STATUS)] fun existingMethodInBase([ResolvedTo(STATUS)] param: R|T|): R|kotlin/Unit| { LAZY_BLOCK } public open [ResolvedTo(STATUS)] fun injected([ResolvedTo(STATUS)] param: R|T|): R|kotlin/Any| { LAZY_BLOCK } } public open actual [ResolvedTo(STATUS)] class Foo : R|Transitive| { public [ResolvedTo(STATUS)] [ContainingClassKey=Foo] constructor(): R|Foo| { LAZY_super } public final actual [ResolvedTo(STATUS)] fun existingMethod(): R|kotlin/Unit| { LAZY_BLOCK } public final actual [ResolvedTo(STATUS)] val existingParam: R|kotlin/Int| = LAZY_EXPRESSION public [ResolvedTo(STATUS)] [ContainingClassKey=Foo] get(): R|kotlin/Int| public open override [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] fun injected([ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] param: R|kotlin/String|): R|kotlin/String| { ^injected String() } } CONSTANT_EVALUATION: FILE: [ResolvedTo(IMPORTS)] common.kt public open expect [ResolvedTo(STATUS)] class Base<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { public expect [ResolvedTo(STATUS)] [ContainingClassKey=Base] constructor<[ResolvedTo(STATUS)] T>(): R|Base| public final expect [ResolvedTo(STATUS)] fun existingMethodInBase([ResolvedTo(STATUS)] param: R|T|): R|kotlin/Unit| } public open [ResolvedTo(STATUS)] class Transitive : R|Base| { public [ResolvedTo(STATUS)] [ContainingClassKey=Transitive] constructor(): R|Transitive| { LAZY_super|> } } public open expect [ResolvedTo(RAW_FIR)] class Foo : Transitive { public? final? expect [ResolvedTo(RAW_FIR)] fun existingMethod(): R|kotlin/Unit| public? final? expect [ResolvedTo(RAW_FIR)] val existingParam: Int public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Foo] get(): Int } FILE: [ResolvedTo(IMPORTS)] jvm.kt public open actual [ResolvedTo(STATUS)] class Base<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { public [ResolvedTo(STATUS)] [ContainingClassKey=Base] constructor<[ResolvedTo(STATUS)] T>(): R|Base| { LAZY_super } public final actual [ResolvedTo(STATUS)] fun existingMethodInBase([ResolvedTo(STATUS)] param: R|T|): R|kotlin/Unit| { LAZY_BLOCK } public open [ResolvedTo(STATUS)] fun injected([ResolvedTo(STATUS)] param: R|T|): R|kotlin/Any| { LAZY_BLOCK } } public open actual [ResolvedTo(STATUS)] class Foo : R|Transitive| { public [ResolvedTo(STATUS)] [ContainingClassKey=Foo] constructor(): R|Foo| { LAZY_super } public final actual [ResolvedTo(STATUS)] fun existingMethod(): R|kotlin/Unit| { LAZY_BLOCK } public final actual [ResolvedTo(STATUS)] val existingParam: R|kotlin/Int| = LAZY_EXPRESSION public [ResolvedTo(STATUS)] [ContainingClassKey=Foo] get(): R|kotlin/Int| public open override [ResolvedTo(CONSTANT_EVALUATION)] fun injected([ResolvedTo(CONSTANT_EVALUATION)] param: R|kotlin/String|): R|kotlin/String| { ^injected String() } } ANNOTATION_ARGUMENTS: FILE: [ResolvedTo(IMPORTS)] common.kt public open expect [ResolvedTo(STATUS)] class Base<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { public expect [ResolvedTo(STATUS)] [ContainingClassKey=Base] constructor<[ResolvedTo(STATUS)] T>(): R|Base| public final expect [ResolvedTo(STATUS)] fun existingMethodInBase([ResolvedTo(STATUS)] param: R|T|): R|kotlin/Unit| } public open [ResolvedTo(STATUS)] class Transitive : R|Base| { public [ResolvedTo(STATUS)] [ContainingClassKey=Transitive] constructor(): R|Transitive| { LAZY_super|> } } public open expect [ResolvedTo(RAW_FIR)] class Foo : Transitive { public? final? expect [ResolvedTo(RAW_FIR)] fun existingMethod(): R|kotlin/Unit| public? final? expect [ResolvedTo(RAW_FIR)] val existingParam: Int public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Foo] get(): Int } FILE: [ResolvedTo(IMPORTS)] jvm.kt public open actual [ResolvedTo(STATUS)] class Base<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { public [ResolvedTo(STATUS)] [ContainingClassKey=Base] constructor<[ResolvedTo(STATUS)] T>(): R|Base| { LAZY_super } public final actual [ResolvedTo(STATUS)] fun existingMethodInBase([ResolvedTo(STATUS)] param: R|T|): R|kotlin/Unit| { LAZY_BLOCK } public open [ResolvedTo(STATUS)] fun injected([ResolvedTo(STATUS)] param: R|T|): R|kotlin/Any| { LAZY_BLOCK } } public open actual [ResolvedTo(STATUS)] class Foo : R|Transitive| { public [ResolvedTo(STATUS)] [ContainingClassKey=Foo] constructor(): R|Foo| { LAZY_super } public final actual [ResolvedTo(STATUS)] fun existingMethod(): R|kotlin/Unit| { LAZY_BLOCK } public final actual [ResolvedTo(STATUS)] val existingParam: R|kotlin/Int| = LAZY_EXPRESSION public [ResolvedTo(STATUS)] [ContainingClassKey=Foo] get(): R|kotlin/Int| public open override [ResolvedTo(ANNOTATION_ARGUMENTS)] fun injected([ResolvedTo(ANNOTATION_ARGUMENTS)] param: R|kotlin/String|): R|kotlin/String| { ^injected String() } } BODY_RESOLVE: FILE: [ResolvedTo(IMPORTS)] common.kt public open expect [ResolvedTo(STATUS)] class Base<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { public expect [ResolvedTo(STATUS)] [ContainingClassKey=Base] constructor<[ResolvedTo(STATUS)] T>(): R|Base| public final expect [ResolvedTo(STATUS)] fun existingMethodInBase([ResolvedTo(STATUS)] param: R|T|): R|kotlin/Unit| } public open [ResolvedTo(STATUS)] class Transitive : R|Base| { public [ResolvedTo(STATUS)] [ContainingClassKey=Transitive] constructor(): R|Transitive| { LAZY_super|> } } public open expect [ResolvedTo(RAW_FIR)] class Foo : Transitive { public? final? expect [ResolvedTo(RAW_FIR)] fun existingMethod(): R|kotlin/Unit| public? final? expect [ResolvedTo(RAW_FIR)] val existingParam: Int public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Foo] get(): Int } FILE: [ResolvedTo(IMPORTS)] jvm.kt public open actual [ResolvedTo(STATUS)] class Base<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { public [ResolvedTo(STATUS)] [ContainingClassKey=Base] constructor<[ResolvedTo(STATUS)] T>(): R|Base| { LAZY_super } public final actual [ResolvedTo(STATUS)] fun existingMethodInBase([ResolvedTo(STATUS)] param: R|T|): R|kotlin/Unit| { LAZY_BLOCK } public open [ResolvedTo(STATUS)] fun injected([ResolvedTo(STATUS)] param: R|T|): R|kotlin/Any| { LAZY_BLOCK } } public open actual [ResolvedTo(STATUS)] class Foo : R|Transitive| { public [ResolvedTo(STATUS)] [ContainingClassKey=Foo] constructor(): R|Foo| { LAZY_super } public final actual [ResolvedTo(STATUS)] fun existingMethod(): R|kotlin/Unit| { LAZY_BLOCK } public final actual [ResolvedTo(STATUS)] val existingParam: R|kotlin/Int| = LAZY_EXPRESSION public [ResolvedTo(STATUS)] [ContainingClassKey=Foo] get(): R|kotlin/Int| public open override [ResolvedTo(BODY_RESOLVE)] fun injected([ResolvedTo(BODY_RESOLVE)] param: R|kotlin/String|): R|kotlin/String| { ^injected String() } } FILE RAW TO BODY: FILE: [ResolvedTo(BODY_RESOLVE)] jvm.kt public open actual [ResolvedTo(BODY_RESOLVE)] class Base<[ResolvedTo(BODY_RESOLVE)] T> : R|kotlin/Any| { public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Base] constructor<[ResolvedTo(BODY_RESOLVE)] T>(): R|Base| { super() } public final actual [ResolvedTo(BODY_RESOLVE)] fun existingMethodInBase([ResolvedTo(BODY_RESOLVE)] param: R|T|): R|kotlin/Unit| { } public open [ResolvedTo(BODY_RESOLVE)] fun injected([ResolvedTo(BODY_RESOLVE)] param: R|T|): R|kotlin/Any| { ^injected String() } } public open actual [ResolvedTo(BODY_RESOLVE)] class Foo : R|Transitive| { public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Foo] constructor(): R|Foo| { super() } public final actual [ResolvedTo(BODY_RESOLVE)] fun existingMethod(): R|kotlin/Unit| { } public final actual [ResolvedTo(BODY_RESOLVE)] val existingParam: R|kotlin/Int| = Int(904) public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Foo] get(): R|kotlin/Int| public open override [ResolvedTo(BODY_RESOLVE)] fun injected([ResolvedTo(BODY_RESOLVE)] param: R|kotlin/String|): R|kotlin/String| { ^injected String() } }