code: def phonemes_to_phonetic_representation(self, phonemes: list) -> str:
          
          phonetic_representation = []
          if len(phonemes) >= 2:
              for i in range(len(phonemes)):
                  if i == 0:
                      current_pos = Position(Rank.first, None, phonemes[i])
                  elif i < len(phonemes) - 1:
                      current_pos = Position(Rank.inner, phonemes[i - 1], phonemes[i + 1])
                  else:
                      current_pos = Position(Rank.last, phonemes[i - 1], None)
                  found = False
                  for rule in self.rules:
                      if rule.temp_sound.ipar == phonemes[i].ipar:
                          if rule.can_apply(current_pos):
                              phonetic_representation.append(rule.estimated_sound.ipar)
                              found = True
                              break
                  if not found:
                      phonetic_representation.append(phonemes[i].ipar)
          else:
              phonetic_representation.append(phonemes[0].ipar)
          return "".join(phonetic_representation)
docs: Use of rules to precise pronunciation of a preprocessed list of transcribed words
          :param phonemes: list(Vowel or Consonant)
          :return: str