FILE: whenExpressionType.kt
    public final enum class A : R|kotlin/Enum<A>| {
        private constructor(): R|A| {
            super<R|kotlin/Enum<A>|>()
        }

        public final static enum entry A1: R|A|
        public final static enum entry A2: R|A|
        public final static fun values(): R|kotlin/Array<A>| {
        }

        public final static fun valueOf(value: R|kotlin/String|): R|A| {
        }

    }
    public final class B : R|kotlin/Any| {
        public constructor(): R|B| {
            super<R|kotlin/Any|>()
        }

    }
    public final class C : R|kotlin/Any| {
        public constructor(b: R|B|): R|C| {
            super<R|kotlin/Any|>()
        }

        public final val b: R|B| = R|<local>/b|
            public get(): R|B|

    }
    public final fun case1(): R|kotlin/Unit| {
        lval flag: R|A| = Q|A|.R|/A.A1|
        lval l0: R|B| = when (R|<local>/flag|!!) {
            ==($subj$, Q|A|.R|/A.A1|) ->  {
                R|/B.B|()
            }
            ==($subj$, Q|A|.R|/A.A2|) ->  {
                R|/B.B|()
            }
        }

        lval x1: R|C| = R|/C.C|(R|<local>/l0|)
    }
    public final fun case2(): R|kotlin/Unit| {
        lval flag: R|A| = Q|A|.R|/A.A1|
        lval l0: R|B| = when (R|<local>/flag|) {
            ==($subj$, Q|A|.R|/A.A1|) ->  {
                R|/B.B|()
            }
            ==($subj$, Q|A|.R|/A.A2|) ->  {
                R|/B.B|()
            }
        }

        lval x1: R|C| = R|/C.C|(R|<local>/l0|)
    }
    public final fun case3(): R|kotlin/Unit| {
        lval flag: R|A| = Q|A|.R|/A.A1|
        lval l1: R|B| = when (R|<local>/flag|!!) {
            ==($subj$, Q|A|.R|/A.A1|) ->  {
                R|/B.B|()
            }
            ==($subj$, Q|A|.R|/A.A2|) ->  {
                R|/B.B|()
            }
        }

        lval x1: R|C| = R|/C.C|(R|<local>/l1|)
    }
    public final fun case4(): R|kotlin/Unit| {
        lval flag: R|A| = Q|A|.R|/A.A1|
        lval l2: R|B| = when (R|<local>/flag|) {
            ==($subj$, Q|A|.R|/A.A1|) ->  {
                R|/B.B|()
            }
            ==($subj$, Q|A|.R|/A.A2|) ->  {
                R|/B.B|()
            }
        }

        lval x2: R|C| = R|/C.C|(R|<local>/l2|)
    }
    public final fun case5(): R|kotlin/Unit| {
        lval flag: R|kotlin/Any| = Q|A|.R|/A.A1|
        lval l1: R|B| = when (R|<local>/flag|) {
            ==($subj$, Q|A|.R|/A.A1|) ->  {
                R|/B.B|()
            }
            ==($subj$, Q|A|.R|/A.A2|) ->  {
                R|/B.B|()
            }
            else ->  {
                R|/B.B|()
            }
        }

        lval x1: R|C| = R|/C.C|(R|<local>/l1|)
    }
    public final fun case6(): R|kotlin/Unit| {
        lval flag: R|kotlin/Any| = Q|A|.R|/A.A1|
        lval l1: R|B| = when (R|<local>/flag|!!) {
            ==($subj$, Q|A|.R|/A.A1|) ->  {
                R|/B.B|()
            }
            ==($subj$, Q|A|.R|/A.A2|) ->  {
                R|/B.B|()
            }
            else ->  {
                R|/B.B|()
            }
        }

        lval x1: R|C| = R|/C.C|(R|<local>/l1|)
    }
    public final fun case7(): R|kotlin/Unit| {
        lval flag: R|kotlin/Any| = Q|A|.R|/A.A1|
        lval l1: R|B| = when (R|<local>/flag|) {
            ==($subj$, Q|A|.R|/A.A1|) ->  {
                R|/B.B|()
            }
            ==($subj$, Q|A|.R|/A.A2|) ->  {
                R|/B.B|()
            }
            else ->  {
                R|/B.B|()
            }
        }

        lval x1: R|C| = R|/C.C|(R|<local>/l1|)
    }
    public final fun case8(): R|kotlin/Unit| {
        lval flag: R|kotlin/Any| = Q|A|.R|/A.A1|
        lval l1: R|B| = when (R|<local>/flag|!!) {
            ==($subj$, Q|A|.R|/A.A1|) ->  {
                R|/B.B|()
            }
            ==($subj$, Q|A|.R|/A.A2|) ->  {
                R|/B.B|()
            }
            else ->  {
                R|/B.B|()
            }
        }

        lval x1: R|C| = R|/C.C|(R|<local>/l1|)
    }
    public final fun case9(): R|kotlin/Unit| {
        lval flag: R|kotlin/Any| = Q|A|.R|/A.A1|
        lval l1: R|kotlin/Unit| = when (R|<local>/flag|) {
            ==($subj$, Q|A|.R|/A.A1|) ->  {
                R|/B.B|()
            }
            ==($subj$, Q|A|.R|/A.A2|) ->  {
                R|/B.B|()
            }
        }

        lval x1: R|C| = <Inapplicable(INAPPLICABLE): /C.C>#(R|<local>/l1|)
    }
