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