code: def parseTree(self, root, state: ParseState) -> List[Dict]:
          
  
          if root.tag in self.AST_TAG_HANDLERS:
              return self.AST_TAG_HANDLERS[root.tag](root, state)
  
          elif root.tag in self.libRtns:
              return self.process_libRtn(root, state)
  
          else:
              prog = []
              for node in root:
                  prog += self.parseTree(node, state)
              return prog
docs: Parses the XML ast tree recursively to generate a JSON AST
          which can be ingested by other scripts to generate Python
          scripts.
  
          Args:
              root: The current root of the tree.
              state: The current state of the tree defined by an object of the
                  ParseState class.
  
          Returns:
                  ast: A JSON ast that defines the structure of the Fortran file.