docs: def serialize_session(self, mdict):
          """Save extra metadata to a dict so that it can be serialized
  
          This is not saved by __getstate__ because child segments will point to
          the same data and this allows it to only be saved for the base segment.
          As well as allowing it to be pulled out of the main json so that it can
          be more easily edited by hand if desired.
          """
          mdict["comment ranges"] = [list(a) for a in self.get_style_ranges(comment=True)]
          mdict["data ranges"] = [list(a) for a in self.get_style_ranges(data=True)]
          for i in range(1, user_bit_mask):
              r = [list(a) for a in self.get_style_ranges(user=i)]
              if r:
                  slot = "user style %d" % i
                  mdict[slot] = r
  
          # json serialization doesn't allow int keys, so convert to list of
          # pairs
          mdict["comments"] = self.get_sorted_comments()