~T~interface T {
    fun foo() {}
}
~C~open class C() {
    fun bar() {}
}

~A~class A<E>() : C(), T {

    fun test() {
        `T`super<T>.foo()
        `C`super<C>.bar()
        `T`super<T>@A.foo()
        `C`super<C>@A.bar()
    }

    inner class B : T {
        fun test() {
            `T`super<T>.foo();
            `C`super<C>@A.bar()
            `T`super<T>@A.foo()
            `T`super<T>@B.foo()
            `T`super.foo()
        }
    }
}

~G~interface G<T> {
    fun foo() {}
}

class CG : G<Int> {
    fun test() {
        `G`super<`G`G>.foo() // OK
    }
}