Handle variables with multiple assignments
A variable can be assigned more than once. Storing those in a map by name means you only can store one assignment. This means that some issues can remain hidden as the linter would only look at the latest assignment.
Refactor the way variables are stored from a map to a slice, and introduce a new API from the parser where linters would use an iterator that returns all variables.