fun ([a] T.(A) -> Unit).foo() fun ([a] T.(A) -> C).foo(); fun [a] ([a] T.(A) -> R).foo() {} fun [a] (() -> Unit).foo() [a] fun [a] ((A, B) -> Unit).foo()