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