fun (@[a] T.(A) -> Unit).foo() fun (@[a] T.(A) -> C).foo(); fun @[a] (@[a] T.(A) -> R).foo() {} fun @[a] ((B.(A ->B)) -> Unit).foo() fun @[a] ((A, B) -> Unit).foo() fun ((T) -> G)?.foo() fun ((T) -> G)??.foo() //-------------- fun f() a.b class C