docs: def verify_rank_integrity(self, tax_id, rank, parent_id, children):
          """Confirm that for each node the parent ranks and children ranks are
          coherent
  
          """
          def _lower(n1, n2):
              return self.ranks.index(n1) < self.ranks.index(n2)
  
          if rank not in self.ranks:
              raise TaxonIntegrityError('rank "{}" is undefined'.format(rank))
  
          parent_rank = self.rank(parent_id)
          # undefined ranks can be placed anywhere in a lineage
          if not _lower(rank, parent_rank) and rank != self.NO_RANK:
              msg = ('New node "{}", rank "{}" has same or '
                     'higher rank than parent node "{}", rank "{}"')
              msg = msg.format(tax_id, rank, parent_id, parent_rank)
              raise TaxonIntegrityError(msg)
  
          for child in children:
              if not _lower(self.rank(child), rank):
                  msg = 'Child node {} has same or lower rank as new node {}'
                  msg = msg.format(tax_id, child)
                  raise TaxonIntegrityError(msg)
          return True