FILE: objectInnerClass.kt public final val case1: R|anonymous| = object : R|A| { private constructor(): R|anonymous| { super() } local final inner class Child : R|.Base| { public[local] constructor(property: R|B|): R|.Child| { this@R|/anonymous|.super.Base|>(R|/property|) } public[local] final fun R|.Base|.zoo(): R|kotlin/Unit| { lval x: R|B| = this@R|/.Child.zoo|.R|/.Base.property| } public[local] final fun foo(): R|kotlin/Unit| { this@R|/.Child|.R|/.Base.baseFun|() lval x: R|B| = this@R|/.Child|.R|/.Base.property| (this@R|/.Child|, this@R|/.Child|).R|/.Child.zoo|() (this@R|/anonymous|, this@R|/.Child|).R|/anonymous.hoo|() } } public[local] final fun R|.Child|.voo(): R|kotlin/Unit| { lval x: R|B| = this@R|/anonymous.voo|.R|/.Base.property| } public[local] final fun R|.Base|.hoo(): R|kotlin/Unit| { lval x: R|B| = this@R|/anonymous.hoo|.R|/.Base.property| } local open inner class Base : R|kotlin/Any| { public[local] constructor(property: R|B|): R|.Base| { super() } public[local] final val property: R|B| = R|/property| public get(): R|B| public[local] final fun baseFun(): R|kotlin/Unit| { } } public[local] final fun caseForBase(): R|kotlin/Unit| { lval base: R|.Base| = this@R|/anonymous|.R|/.Base.Base|(R|/B.B|()) R|/base|.R|/.Base.baseFun|() R|/base|.R|/.Base.property| (this@R|/anonymous|, R|/base|).R|/anonymous.hoo|() } public[local] final fun caseForChild(): R|kotlin/Unit| { lval child: R|.Child| = this@R|/anonymous|.R|/.Child.Child|(R|/B.B|()) R|/child|.R|/.Base.baseFun|() R|/child|.R|/.Base.property| R|/child|.R|/.Child.foo|() (this@R|/anonymous|, R|/child|).R|/anonymous.hoo|() (this@R|/anonymous|, R|/child|).R|/anonymous.voo|() } } public get(): R|anonymous| public final class Case2 : R|kotlin/Any| { public constructor(): R|Case2| { super() } public final val x: R|anonymous| = object : R|Case2.Base| { private constructor(): R|anonymous| { this@R|/Case2|.super(R|/B.B|()) } public[local] final fun R|Case2.Base|.zoo(): R|kotlin/Unit| { lval x: R|B| = this@R|/anonymous.zoo|.R|/Case2.Base.property| } public[local] final fun foo(): R|kotlin/Unit| { this@R|/anonymous|.R|/Case2.Base.baseFun|() lval x: R|B| = this@R|/anonymous|.R|/Case2.Base.property| (this@R|/anonymous|, this@R|/anonymous|).R|/anonymous.zoo|() (this@R|/Case2|, this@R|/anonymous|).R|/Case2.hoo|() } } public get(): R|anonymous| public final fun R|Case2.Base|.hoo(): R|kotlin/Unit| { lval x: R|B| = this@R|/Case2.hoo|.R|/Case2.Base.property| } public open inner class Base : R|kotlin/Any| { public constructor(property: R|B|): R|Case2.Base| { super() } public final val property: R|B| = R|/property| public get(): R|B| public final fun baseFun(): R|kotlin/Unit| { } } public final fun caseForBase(): R|kotlin/Unit| { lval base: R|Case2.Base| = this@R|/Case2|.R|/Case2.Base.Base|(R|/B.B|()) R|/base|.R|/Case2.Base.baseFun|() R|/base|.R|/Case2.Base.property| (this@R|/Case2|, R|/base|).R|/Case2.hoo|() } public final fun caseForChild(): R|kotlin/Unit| { lval child: R|anonymous| = this@R|/Case2|.R|/Case2.x| R|/child|.R|/Case2.Base.baseFun|() R|/child|.R|/Case2.Base.property| (this@R|/Case2|, R|/child|).R|/Case2.hoo|() } } public final class Case3 : R|kotlin/Any| { public constructor(): R|Case3| { super() } public final val x: R|anonymous| = object : R|A| { private constructor(): R|anonymous| { super() } local final inner class Child : R|Case3..Base| { public[local] constructor(property: R|B|): R|Case3..Child| { this@R|/anonymous|.super.Base|>(R|/property|) } public[local] final fun R|Case3..Base|.zoo(): R|kotlin/Unit| { lval x: R|B| = this@R|/Case3..Child.zoo|.R|/Case3..Base.property| } public[local] final fun foo(): R|kotlin/Unit| { this@R|/Case3..Child|.R|/Case3..Base.baseFun|() lval x: R|B| = this@R|/Case3..Child|.R|/Case3..Base.property| (this@R|/Case3..Child|, this@R|/Case3..Child|).R|/Case3..Child.zoo|() (this@R|/anonymous|, this@R|/Case3..Child|).R|/anonymous.hoo|() } } public[local] final fun R|Case3..Child|.voo(): R|kotlin/Unit| { lval x: R|B| = this@R|/anonymous.voo|.R|/Case3..Base.property| } public[local] final fun R|Case3..Base|.hoo(): R|kotlin/Unit| { lval x: R|B| = this@R|/anonymous.hoo|.R|/Case3..Base.property| } local open inner class Base : R|kotlin/Any| { public[local] constructor(property: R|B|): R|Case3..Base| { super() } public[local] final val property: R|B| = R|/property| public get(): R|B| public[local] final fun baseFun(): R|kotlin/Unit| { } } public[local] final fun caseForBase(): R|kotlin/Unit| { lval base: R|Case3..Base| = this@R|/anonymous|.R|/Case3..Base.Base|(R|/B.B|()) R|/base|.R|/Case3..Base.baseFun|() R|/base|.R|/Case3..Base.property| (this@R|/anonymous|, R|/base|).R|/anonymous.hoo|() } public[local] final fun caseForChild(): R|kotlin/Unit| { lval child: R|Case3..Child| = this@R|/anonymous|.R|/Case3..Child.Child|(R|/B.B|()) R|/child|.R|/Case3..Base.baseFun|() R|/child|.R|/Case3..Base.property| R|/child|.R|/Case3..Child.foo|() (this@R|/anonymous|, R|/child|).R|/anonymous.hoo|() (this@R|/anonymous|, R|/child|).R|/anonymous.voo|() } } public get(): R|anonymous| } public abstract interface A : R|kotlin/Any| { } public final class B : R|kotlin/Any| { public constructor(): R|B| { super() } } FILE: CHECK_TYPE.kt public final fun checkSubtype(t: R|T|): R|T| { ^checkSubtype R|/t| } public final class Inv : R|kotlin/Any| { public constructor(): R|tests/_checkType/Inv| { super() } } public final fun R|tests/_checkType/Inv|._(): R|kotlin/Unit| { } public final infix fun R|T|.checkType(f: R|tests/_checkType/Inv.() -> kotlin/Unit|): R|kotlin/Unit| { }