code: def _build_tree_by_level(self, time_qualifier, collection_name, since):
          
          invalid_tree_records = dict()
          invalid_tq_records = dict()
  
          try:
              job_records = self.job_dao.get_all(collection_name, since)
              for job_record in job_records:
                  tree = self.get_tree(job_record.process_name)
                  if tree is None:
                      utils.increment_family_property(job_record.process_name, invalid_tree_records)
                      continue
  
                  job_time_qualifier = context.process_context[job_record.process_name].time_qualifier
                  if time_qualifier != job_time_qualifier:
                      utils.increment_family_property(job_record.process_name, invalid_tq_records)
                      continue
  
                  tree.update_node(job_record)
  
          except LookupError:
              self.logger.warning('No job records in {0}.'.format(collection_name))
  
          for name, counter in invalid_tree_records.items():
              self.logger.warning('Skipping {0} job records for {1} since no tree is handling it.'
                                  .format(counter, name))
  
          for name, counter in invalid_tq_records.items():
              self.logger.warning('Skipping {0} job records for {1} since the process has different time qualifier.'
                                  .format(counter, name))
docs: method iterated thru all documents in all job collections and builds a tree of known system state