fun foo() fun [a] foo() fun [a] T.foo() fun [a] T.foo(a : foo) : bar fun [a()] T.foo b>(a : foo) : bar fun foo(); fun [a] foo(); fun [a] T.foo(); fun [a] T.foo(a : foo) : bar; fun [a()] T.foo b>(a : foo) : bar; fun foo() {} fun [a] foo() {} fun [a] T.foo() {} fun [a] T.foo(a : foo) : bar {} fun [a()] T.foo b>(a : foo) : bar {} fun [a()] T.foo b>(a : foo) : bar {} fun A?.foo() : bar? fun A? .foo() : bar?