FILE: objectInnerClass.kt public final val case1: R|| = object : R|A| { private[local] constructor(): R|| { super() } local final inner class Child : R|.Base| { public[local] constructor(property: R|B|): R|.Child| { this@R|/|.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|/|, this@R|/.Child|).R|/.hoo|() } } public[local] final fun R|.Child|.voo(): R|kotlin/Unit| { lval x: R|B| = this@R|/.voo|.R|/.Base.property| } public[local] final fun R|.Base|.hoo(): R|kotlin/Unit| { lval x: R|B| = this@R|/.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|/|.R|/.Base.Base|(R|/B.B|()) R|/base|.R|/.Base.baseFun|() R|/base|.R|/.Base.property| (this@R|/|, R|/base|).R|/.hoo|() } public[local] final fun caseForChild(): R|kotlin/Unit| { lval child: R|.Child| = this@R|/|.R|/.Child.Child|(R|/B.B|()) R|/child|.R|/.Base.baseFun|() R|/child|.R|/.Base.property| R|/child|.R|/.Child.foo|() (this@R|/|, R|/child|).R|/.hoo|() (this@R|/|, R|/child|).R|/.voo|() } } public get(): R|| public final class Case2 : R|kotlin/Any| { public constructor(): R|Case2| { super() } public final val x: R|| = object : R|Case2.Base| { private[local] constructor(): R|| { this@R|/Case2|.super(R|/B.B|()) } public[local] final fun R|Case2.Base|.zoo(): R|kotlin/Unit| { lval x: R|B| = this@R|/.zoo|.R|/Case2.Base.property| } public[local] final fun foo(): R|kotlin/Unit| { this@R|/|.R|/Case2.Base.baseFun|() lval x: R|B| = this@R|/|.R|/Case2.Base.property| (this@R|/|, this@R|/|).R|/.zoo|() (this@R|/Case2|, this@R|/|).R|/Case2.hoo|() } } public get(): R|| 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|| = 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|| = object : R|A| { private[local] constructor(): R|| { super() } local final inner class Child : R|Case3..Base| { public[local] constructor(property: R|B|): R|Case3..Child| { this@R|/|.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|/|, this@R|/Case3..Child|).R|/.hoo|() } } public[local] final fun R|Case3..Child|.voo(): R|kotlin/Unit| { lval x: R|B| = this@R|/.voo|.R|/Case3..Base.property| } public[local] final fun R|Case3..Base|.hoo(): R|kotlin/Unit| { lval x: R|B| = this@R|/.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|/|.R|/Case3..Base.Base|(R|/B.B|()) R|/base|.R|/Case3..Base.baseFun|() R|/base|.R|/Case3..Base.property| (this@R|/|, R|/base|).R|/.hoo|() } public[local] final fun caseForChild(): R|kotlin/Unit| { lval child: R|Case3..Child| = this@R|/|.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|/|, R|/child|).R|/.hoo|() (this@R|/|, R|/child|).R|/.voo|() } } public get(): R|| } 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| { }