code: def handle_walk(self, listener: TreeListener, tree: Union[ast.Node, dict, list]) -> None:
          
          if isinstance(tree, ast.Node):
              self.walk(listener, tree)
          elif isinstance(tree, dict):
              for k in tree.keys():
                  self.handle_walk(listener, tree[k])
          elif isinstance(tree, list):
              for i in range(len(tree)):
                  self.handle_walk(listener, tree[i])
          else:
              pass
docs: Handles tree walking, has to account for dictionaries and lists
          :param listener: listener that reacts to walked events
          :param tree: the tree to walk
          :return: None