code: def treewalk(self, root, parsed, unparsed):
          
          suggestions = dict()
          if not unparsed:
              logger.debug("no tokens left unparsed. returning %s, %s", parsed, suggestions)
              return parsed, unparsed, suggestions
  
          token = unparsed.pop().strip()
          logger.debug("begin parsing at %s w/ tokens: %s", root.node, unparsed)
          if root.node == token:
              logger.debug("root node: %s matches next token:%s", root.node, token)
              parsed.append(token)
              if self.peekForOption(unparsed):  # check for localFlags and globalFlags
                  logger.debug("option(s) upcoming %s", unparsed)
                  parsed_opts, unparsed, suggestions = self.evalOptions(root, list(), unparsed[:])
                  if parsed_opts:
                      logger.debug("parsed option(s): %s", parsed_opts)
                      parsed.extend(parsed_opts)
              if unparsed and not self.peekForOption(unparsed):  # unparsed bits without options
                  logger.debug("begin subtree %s parsing", root.node)
                  for child in root.children:
                      parsed_subtree, unparsed, suggestions = self.treewalk(child, list(), unparsed[:])
                      if parsed_subtree:  # subtree returned further parsed tokens
                          parsed.extend(parsed_subtree)
                          logger.debug("subtree at: %s has matches. %s, %s", child.node, parsed, unparsed)
                          break
                  else:
                      # no matches found in command tree
                      # return children of root as suggestions
                      logger.debug("no matches in subtree: %s. returning children as suggestions", root.node)
                      for child in root.children:
                          suggestions[child.node] = child.help
          else:
              logger.debug("no token or option match")
              unparsed.append(token)
          return parsed, unparsed, suggestions
docs: Recursively walks the syntax tree at root and returns
          the items parsed, unparsed and possible suggestions