code: def node_iter(self, unique_syms=False):
          
          if unique_syms:
              for sym in self.unique_defined_syms:
                  sym._visited = False
  
          node = self.top_node
          while 1:
              # Jump to the next node with an iterative tree walk
              if node.list:
                  node = node.list
              elif node.next:
                  node = node.next
              else:
                  while node.parent:
                      node = node.parent
                      if node.next:
                          node = node.next
                          break
                  else:
                      # No more nodes
                      return
  
              if unique_syms and node.item.__class__ is Symbol:
                  if node.item._visited:
                      continue
                  node.item._visited = True
  
              yield node
docs: Returns a generator for iterating through all MenuNode's in the Kconfig
          tree. The iteration is done in Kconfig definition order (each node is
          visited before its children, and the children of a node are visited
          before the next node).
  
          The Kconfig.top_node menu node is skipped. It contains an implicit menu
          that holds the top-level items.
  
          As an example, the following code will produce a list equal to
          Kconfig.defined_syms:
  
            defined_syms = [node.item for node in kconf.node_iter()
                            if isinstance(node.item, Symbol)]
  
          unique_syms (default: False):
            If True, only the first MenuNode will be included for symbols defined
            in multiple locations.
  
            Using kconf.node_iter(True) in the example above would give a list
            equal to unique_defined_syms.