docs: def difference(self, reference, hypothesis, uem=None, uemified=False):
          """Get error analysis as `Annotation`
  
          Labels are (status, reference_label, hypothesis_label) tuples.
          `status` is either 'correct', 'confusion', 'missed detection' or
          'false alarm'.
          `reference_label` is None in case of 'false alarm'.
          `hypothesis_label` is None in case of 'missed detection'.
  
          Parameters
          ----------
          uemified : bool, optional
              Returns "uemified" version of reference and hypothesis.
              Defaults to False.
  
          Returns
          -------
          errors : `Annotation`
  
          """
  
          R, H, common_timeline = self.uemify(
              reference, hypothesis, uem=uem,
              collar=self.collar, skip_overlap=self.skip_overlap,
              returns_timeline=True)
  
          errors = Annotation(uri=reference.uri, modality=reference.modality)
  
          # loop on all segments
          for segment in common_timeline:
  
              # list of labels in reference segment
              rlabels = R.get_labels(segment, unique=False)
  
              # list of labels in hypothesis segment
              hlabels = H.get_labels(segment, unique=False)
  
              _, details = self.matcher(rlabels, hlabels)
  
              for r, h in details[MATCH_CORRECT]:
                  track = errors.new_track(segment, prefix=MATCH_CORRECT)
                  errors[segment, track] = (MATCH_CORRECT, r, h)
  
              for r, h in details[MATCH_CONFUSION]:
                  track = errors.new_track(segment, prefix=MATCH_CONFUSION)
                  errors[segment, track] = (MATCH_CONFUSION, r, h)
  
              for r in details[MATCH_MISSED_DETECTION]:
                  track = errors.new_track(segment,
                                           prefix=MATCH_MISSED_DETECTION)
                  errors[segment, track] = (MATCH_MISSED_DETECTION, r, None)
  
              for h in details[MATCH_FALSE_ALARM]:
                  track = errors.new_track(segment, prefix=MATCH_FALSE_ALARM)
                  errors[segment, track] = (MATCH_FALSE_ALARM, None, h)
  
          if uemified:
              return reference, hypothesis, errors
          else:
              return errors