docs: def find_missing_projections(label_list, projections):
      """
      Finds all combinations of labels in `label_list` that are not covered by an entry in the dictionary of
      `projections`. Returns a list containing tuples of uncovered label combinations or en empty list if there are none.
      All uncovered label combinations are naturally sorted.
  
      Each entry in the dictionary of projections represents a single projection that maps a combination of labels (key)
      to a single new label (value). The combination of labels to be mapped is a tuple of naturally sorted labels that
      apply to one or more segments simultaneously. By defining a special wildcard projection using `('**',)` is is not
      required to specify a projection for every single combination of labels.
  
      Args:
          label_list (audiomate.annotations.LabelList): The label list to relabel
          projections (dict): A dictionary that maps tuples of label combinations to string
                              labels.
  
      Returns:
          List: List of combinations of labels that are not covered by any projection
  
      Example:
          >>> ll = annotations.LabelList(labels=[
          ...     annotations.Label('b', 3.2, 4.5),
          ...     annotations.Label('a', 4.0, 4.9),
          ...     annotations.Label('c', 4.2, 5.1)
          ... ])
          >>> find_missing_projections(ll, {('b',): 'new_label'})
          [('a', 'b'), ('a', 'b', 'c'), ('a', 'c'), ('c',)]
      """
      unmapped_combinations = set()
  
      if WILDCARD_COMBINATION in projections:
          return []
  
      for labeled_segment in label_list.ranges():
          combination = tuple(sorted([label.value for label in labeled_segment[2]]))
  
          if combination not in projections:
              unmapped_combinations.add(combination)
  
      return sorted(unmapped_combinations)