This loop seems kinda similar to the `visit_arm` above; however, the one above appears to be handling more things, is this assuming that everything in `self.collected_paths` is a variable binding?

(If so, that's false: one can write `let Foo { x, y } = ...` to get a struct.)