fun foo)
fun @[a] T.foo(a : ) : bar
fun @[a()] T.foo<>(a : foo) : bar
fun @[a()] T.foo<T, , T>(a : foo) : bar
fun @[a()] T.foo<, T, , T>(a : foo) : bar
fun @[a()] T.foo<T, T>(, a : foo, , a: b) : bar

fun foo() : = a;
fun foo() = ;