code: def transform_i_to_j_optional(self, line: str) -> str:
          
          words = line.split(" ")
          space_list = string_utils.space_list(line)
          corrected_words = []
          for word in words:
              found = False
              for prefix in self.constants.PREFIXES:
                  if word.startswith(prefix) and word != prefix:
                      corrected_words.append(self.syllabifier.convert_consonantal_i(prefix))
                      corrected_words.append(
                          self.syllabifier.convert_consonantal_i(word[len(prefix):]))
                      found = True
                      break
              if not found:
                  corrected_words.append(self.syllabifier.convert_consonantal_i(word))
          new_line = string_utils.join_syllables_spaces(corrected_words, space_list)
          #  the following two may be tunable and subject to improvement
          char_list = string_utils.overwrite(list(new_line),
                                            "[bcdfgjkmpqrstvwxzBCDFGHJKMPQRSTVWXZ][i][{}]".format(
                                                self.constants.VOWELS_WO_I),
                                            "j", 1)
          char_list = string_utils.overwrite(char_list,
                                            "[{}][iI][{}]".format(self.constants.LIQUIDS,
                                                                  self.constants.VOWELS_WO_I),
                                            "j", 1)
          return "".join(char_list)
docs: Sometimes for the demands of meter a more permissive i to j transformation is warranted.
  
          :param line:
          :return:
  
          >>> print(VerseScanner().transform_i_to_j_optional("Italiam"))
          Italjam
          >>> print(VerseScanner().transform_i_to_j_optional("Lāvīniaque"))
          Lāvīnjaque
          >>> print(VerseScanner().transform_i_to_j_optional("omnium"))
          omnjum