code: public static <OutputType, Type1, Type2> Collection<OutputType> joinCollections(Collection<Type1> c1, Function<Type1, OutputType> converter1,
                                                                                      Collection<Type2> c2, Function<Type2, OutputType> converter2) {
          return new ConvertedSetView<>(c1, converter1, c2, converter2);
      }
docs: Returns an unmodifiable Collection View made up of the given Collections while translating the items into a common type.
  The returned Collection View does not copy any of the data from any of the given Collections, therefore any changes
  in the two Collections will be reflected in the View.
  
  @param c1           The first Collection, which contains items of type Type1.
  @param converter1   A Function that translates from Type1 to OutputType.
  @param c2           The second Collection, which contains items of type Type2.
  @param converter2   A Function that translates from Type2 to OutputType.
  @param <OutputType> The type of the items in the returned Set View.
  @param <Type1>      The type of the items in Set 1.
  @param <Type2>      The type of the items in Set 2.
  @return A new Collection View made up of the two Collections, with translation applied.