code: def _next_unused_label(self):
          
          self._next_label()
  
          # This label may be missing.
          if self.page_count in self._used:
              # Keep try while the label is missing.
              missing = self._used.get(self.page_count, set())
              while tuple(self._position) in missing:
                  # Throw the missing information away now we have used it. This
                  # allows the _shade_remaining_missing method to work.
                  missing.discard(tuple(self._position))
  
                  # Shade the missing label if desired.
                  if self.shade_missing:
                      self._shade_missing_label()
  
                  # Try our luck with the next label.
                  self._next_label()
                  missing = self._used.get(self.page_count, set())
  
          # Increment the count now we have found a suitable position.
          self.label_count += 1
docs: Helper method to move to the next unused label. Not intended for external use.
  
          This method will shade in any missing labels if desired, and will
          increment the label_count attribute once a suitable label position has
          been found.