// IGNORE_BACKEND_K1: JS_IR, JS_IR_ES6, NATIVE, WASM
// ISSUE: KT-55318

// MODULE: lib
// FILE: lib.kt
package repro

interface I<out InterfaceTP>

open class Super<SuperTP> {
    fun foo(i: I</*redundant*/out SuperTP>) {}
}

class Sub<SubTP>: Super<SubTP>() {
    /* override fun foo(i: I<out SubTP>) */
}

// MODULE: main(lib)
// FILE: main.kt

package repro

class User<UserTP> {
    val sub = Sub<UserTP>()
    fun foo(i: I<UserTP>) = sub.foo(i)
}

fun box(): String {
    return "OK"
}
