Walks the tree and registers possible symbol declarations. I.e.: functions/variables/aggregates/static if/is()
Groups values and flags that provide (hierarchical) context to the evaluation of a symbol.
The Solver drives the semantic analysis. It can register nodes whose analysis have been postponed.