code: def decode_list_oov(self, ids, source_oov_id_to_token):
      
      seq = reversed(ids) if self._reverse else ids
      tokens = []
      for cur_id in seq:
        if cur_id in self._id_to_token:
          tokens.append(self._id_to_token[cur_id])
        else:
          tokens.append(source_oov_id_to_token[cur_id - self.vocab_size])
      return tokens
docs: decode ids back to tokens, considering OOVs temporary IDs.
  
      Args:
        ids: vocab ids. Could possibly include source temporary OOV ID starting
        from vocab_size.
        source_oov_id_to_token: a list of source OOV tokens, with the order the
        same as they appear in the source.
  
      Returns:
        decoded tokens, possibly including source OOV tokens.