Maybe we could generalize the current syntax, like this: ```fn foo(Gc<self>)```?

Basically, if after splitting on commas, the first token sequence contains the "self" token, then it is intrepreted as "self: T", where T consists of the first token sequence with self replaced with Self.