docs: def traverseItems(self,
                        mode=TraverseMode.DepthFirst,
                        parent=None):
          """
          Generates a tree iterator that will traverse the items of this tree
          in either a depth-first or breadth-first fashion.
          
          :param      mode | <XTreeWidget.TraverseMode>
                      recurse | <bool>
          
          :return     <generator>
          """
          try:
              if parent:
                  count = parent.childCount()
                  func = parent.child
              else:
                  count = self.topLevelItemCount()
                  func = self.topLevelItem
          except RuntimeError:
              # can be raised when iterating on a deleted tree widget.
              return
          
          next = []
          for i in range(count):
              try:
                  item = func(i)
              except RuntimeError:
                  # can be raised when iterating on a deleted tree widget
                  return
              else:
                  yield item
                  if mode == XTreeWidget.TraverseMode.DepthFirst:
                      for child in self.traverseItems(mode, item):
                          yield child
                  else:
                      next.append(item)
          
          for item in next:
              for child in self.traverseItems(mode, item):
                  yield child