code: def avoid(self) -> Tuple[Tuple[int], Tuple[int]]:
          
          to_avoid = set()  # type: Set[Tuple[int, int]]
          for i, state in enumerate(self.global_avoid_states):
              for word_id in state.avoid():
                  if word_id > 0:
                      to_avoid.add((i, word_id))
          for i, state in enumerate(self.local_avoid_states):
              for word_id in state.avoid():
                  if word_id > 0:
                      to_avoid.add((i, word_id))
  
          return tuple(zip(*to_avoid))
docs: Assembles a list of per-hypothesis words to avoid. The indices are (x, y) pairs into the scores
          array, which has dimensions (beam_size, target_vocab_size). These values are then used by the caller
          to set these items to np.inf so they won't be selected. Words to be avoided are selected by
          consulting both the global trie of phrases and the sentence-specific one.
  
          :return: Two lists of indices: the x coordinates and y coordinates.