A traverser that keeps track of scope (Lems->comp->subComp...) would make some of the logic more elegant and readable, replacing ugly constructs tied to the (auto generated) depth-first traverser.
- family visitor
- symbol visitor
- expression dim checker visitor