I find it confusing that a field called `symbolTable` has a type `Global` (after widening) but that's how we wire our dependencies. The fact that `Global` is subtype of `SymbolTable` is purely accidental in my opinion. Also, I'd like to stop us depending on Global anywhere is source code as I believe it's an anti-pattern but I'll discuss this on internals first.