3/5 has some memory-management parts which aren't exactly related to what the patch does. I'm not sure if it's worth splitting at this point, though.
One problem with it though is that the invalid modifiers check is part of declare_var(), which means it'll be printed multiple times if there are multiple variables.
Apart from that I think the series looks good, and simpler than I would have expected.