class U
interface T {
fun foofoofoo(a: A, b: B, c: C): Int
}
abstract class T1 : T, U> {
override fun foofoofoo(a: U, b: U, c: C): Int {
throw UnsupportedOperationException()
}
}
abstract class T2 : T1() {
override fun foofoofoo(a: U, b: U, c: C): Int {
throw UnsupportedOperationException()
}
}
class T3 : T2() {
override fun foofoofoo(a: U, b: U, c: D): Int {
throw UnsupportedOperationException()
}
}