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()