code: def all_terms(self):
          
  
          for s_name, s in self.sections.items():
  
              # Yield the section header
              if s.name != 'Root':
                  yield s
  
              # Yield all of the rows for terms in the section
              for rterm in s:
                  yield rterm
                  for d in rterm.descendents:
                      yield d
docs: Iterate over all of the terms. The self.terms property has only root level terms. This iterator
          iterates over all terms