FILE: propertyTypeMismatchOnOverride.kt
    public open class A : R|kotlin/Any| {
        public constructor(): R|A| {
            super<R|kotlin/Any|>()
        }

        public open var test: R|kotlin/Number| = Int(10)
            public get(): R|kotlin/Number|
            public set(value: R|kotlin/Number|): R|kotlin/Unit|

    }
    public open class B : R|A| {
        public constructor(): R|B| {
            super<R|A|>()
        }

        public open override var test: R|kotlin/Double| = Double(20.0)
            public get(): R|kotlin/Double|
            public set(value: R|kotlin/Double|): R|kotlin/Unit|

    }
    public final class C : R|A| {
        public constructor(): R|C| {
            super<R|A|>()
        }

        public final override var test: R|kotlin/String| = String(Test)
            public get(): R|kotlin/String|
            public set(value: R|kotlin/String|): R|kotlin/Unit|

    }
    public open class D : R|B| {
        public constructor(): R|D| {
            super<R|B|>()
        }

        public open override var test: R|kotlin/Char| = Char(10)
            public get(): R|kotlin/Char|
            public set(value: R|kotlin/Char|): R|kotlin/Unit|

    }
    public final class E<T : R|kotlin/Double|> : R|B| {
        public constructor<T : R|kotlin/Double|>(value: R|T|): R|E<T>| {
            super<R|B|>()
        }

        public final val value: R|T| = R|<local>/value|
            public get(): R|T|

        public final override var test: R|T| = this@R|/E|.R|/E.value|
            public get(): R|T|
            public set(value: R|T|): R|kotlin/Unit|

    }
    public open class F<T : R|kotlin/Number|> : R|kotlin/Any| {
        public constructor<T : R|kotlin/Number|>(value: R|T|): R|F<T>| {
            super<R|kotlin/Any|>()
        }

        public final val value: R|T| = R|<local>/value|
            public get(): R|T|

        public open var rest: R|T| = this@R|/F|.R|/F.value|
            public get(): R|T|
            public set(value: R|T|): R|kotlin/Unit|

    }
    public final class G<E : R|kotlin/Double|> : R|F<E>| {
        public constructor<E : R|kotlin/Double|>(balue: R|E|): R|G<E>| {
            super<R|F<E>|>(R|<local>/balue|)
        }

        public final val balue: R|E| = R|<local>/balue|
            public get(): R|E|

        public final override var rest: R|E| = this@R|/G|.R|/G.balue|
            public get(): R|E|
            public set(value: R|E|): R|kotlin/Unit|

    }
    public final class H<E : R|kotlin/String|> : R|F<E>| {
        public constructor<E : R|kotlin/String|>(balue: R|E|): R|H<E>| {
            super<R|F<E>|>(R|<local>/balue|)
        }

        public final val balue: R|E| = R|<local>/balue|
            public get(): R|E|

        public final override var rest: R|E| = this@R|/H|.R|/H.balue|
            public get(): R|E|
            public set(value: R|E|): R|kotlin/Unit|

    }
    public final class M<E : R|kotlin/String|> : R|F<kotlin/Double>| {
        public constructor<E : R|kotlin/String|>(balue: R|E|): R|M<E>| {
            super<R|F<kotlin/Double>|>(Double(3.14))
        }

        public final val balue: R|E| = R|<local>/balue|
            public get(): R|E|

        public final override var rest: R|E| = this@R|/M|.R|/M.balue|
            public get(): R|E|
            public set(value: R|E|): R|kotlin/Unit|

    }
