docs: def _shift_headings(self, content: str, shift: int) -> str:
          '''Shift Markdown headings in a string by a given value. The shift can
          be positive or negative.
  
          :param content: Markdown content
          :param shift: Heading shift
  
          :returns: Markdown content with headings shifted by ``shift``
          '''
  
          def _sub(heading):
              new_heading_level = len(heading.group('hashes')) + shift
  
              self.logger.debug(f'Shift heading level to {new_heading_level}, heading title: {heading.group("title")}')
  
              if new_heading_level <= 6:
                  return f'{"#" * new_heading_level} {heading.group("title")}{heading.group("tail")}'
  
              else:
                  self.logger.debug('New heading level is out of range, using bold paragraph text instead of heading')
  
                  return f'**{heading.group("title")}**{heading.group("tail")}'
  
          return self._heading_pattern.sub(_sub, content)