Let's not use strange names like `ExecutionContext`, which nobody will understand in the future.
It replaces UnresolvedReference with Variable, FunctionPointer, or SlotName nodes. Also, it gathers all variable names from their declarations.