I noticed that a lot of functions in the parser take an AccessAttrs parameter,
even though, as far as I can tell, it's sufficient to handle access specifier
attributes locally where the access specifier is parsed.
I have removed all of this plumbing, and tests still pass. Much of the code
involved is pretty old, so I suspect this plumbing was required at some point
but that the underlying reason has now been eliminated. It may also be that at
some point people started simply following the pattern of "pass AccessAttrs
wherever an AccessSpecifier is passed".
However, I would appreciate a close look from someone who's more familiar with
the code than I am.