interface A<T, U> {
    fun foo(t: T, u: U): String
}

class Derived(a: A<Long, Int>) : A<Long, Int> by a

fun box(): String {
    val o = object : A<Long, Int> {
        override fun foo(t: Long, u: Int) = if (t == u.toLong()) "OK" else "Fail $t $u"
    }
    return Derived(o).foo(42, 42)
}
