docs: def get_comment_restore_data(self, ranges):
          """Get a chunk of data (designed to be opaque) containing comments,
          styles & locations that can be used to recreate the comments on an undo
          """
          restore_data = []
          for start, end in ranges:
              log.debug("range: %d-%d" % (start, end))
              styles = self.style[start:end].copy()
              items = {}
              for i in range(start, end):
                  rawindex = self.get_raw_index(i)
                  try:
                      comment = self.rawdata.extra.comments[rawindex]
                      log.debug("  index: %d rawindex=%d '%s'" % (i, rawindex, comment))
                      items[i] = (rawindex, comment)
                  except KeyError:
                      log.debug("  index: %d rawindex=%d NO COMMENT TO SAVE" % (i, rawindex))
                      items[i] = (rawindex, None)
  
              restore_data.append((start, end, styles, items))
          return restore_data