docs: def find_differences(self, refindex: int):
          """
          Search all differences between protocol messages regarding a reference message
  
          :param refindex: index of reference message
          :rtype: dict[int, set[int]]
          """
          differences = defaultdict(set)
  
          if refindex >= len(self.protocol.messages):
              return differences
  
          if self.proto_view == 0:
              proto = self.protocol.decoded_proto_bits_str
          elif self.proto_view == 1:
              proto = self.protocol.decoded_hex_str
          elif self.proto_view == 2:
              proto = self.protocol.decoded_ascii_str
          else:
              return differences
  
          ref_message = proto[refindex]
          ref_offset = self.get_alignment_offset_at(refindex)
  
          for i, message in enumerate(proto):
              if i == refindex:
                  continue
  
              msg_offset = self.get_alignment_offset_at(i)
              short, long = sorted([len(ref_message) + ref_offset, len(message) + msg_offset])
  
              differences[i] = {
                  j for j in range(max(msg_offset, ref_offset), long)
                  if j >= short or message[j - msg_offset] != ref_message[j - ref_offset]
              }
  
          return differences