code: def consolidate_predictions(outputs: List[List[str]], sent_tokens: List[Token]) -> Dict[str, List[str]]:
      
      pred_dict: Dict[str, List[str]] = {}
      merged_outputs = [join_mwp(output) for output in outputs]
      predicate_texts = [get_predicate_text(sent_tokens, tags)
                         for tags in merged_outputs]
  
      for pred1_text, tags1 in zip(predicate_texts, merged_outputs):
          # A flag indicating whether to add tags1 to predictions
          add_to_prediction = True
  
          #  Check if this predicate overlaps another predicate
          for pred2_text, tags2 in pred_dict.items():
              if predicates_overlap(tags1, tags2):
                  # tags1 overlaps tags2
                  pred_dict[pred2_text] = merge_overlapping_predictions(tags1, tags2)
                  add_to_prediction = False
  
          # This predicate doesn't overlap - add as a new predicate
          if add_to_prediction:
              pred_dict[pred1_text] = tags1
  
      return pred_dict
docs: Identify that certain predicates are part of a multiword predicate
      (e.g., "decided to run") in which case, we don't need to return
      the embedded predicate ("run").