// RUN_PIPELINE_TILL: FRONTEND
open class A {
    // protected relative to A
    protected open class B { 
        fun foo() {}
    }
    public open class C {
        // protected relative to C, must be an error
        protected open class D : <!EXPOSED_SUPER_CLASS!>B()<!>
    }
}

class E : A.C() {
    // F has invisible grandparent class B (E does not inherit from A)
    class F : <!EXPOSED_SUPER_CLASS!>A.C.D()<!> {
        init {
            // Invoke function from invisible grandparent
            foo() 
        }
    }
}

/* GENERATED_FIR_TAGS: classDeclaration, functionDeclaration, init, nestedClass */
