Agreed on that one, that is also what I called for when I said that we'd like to eg encapsulate the size of the parse result, instead of passing it as an extra parameter everytime.

And yes, we keep parsing and reparsing all over the place. But that may be because MDR are too much deployment related and we're shy about storing them. Maybe we should have something closer to the AST, that we'd parse once and move around, and a class more dedicated to deployment handling. 
The sole fact that we often iterate over it to set deploy/undeploy on it is a code smell IMO