code: public static <I> CompactDFA<I> combine(DFA<?, I> dfa1,
                                              DFA<?, I> dfa2,
                                              Alphabet<I> inputAlphabet,
                                              AcceptanceCombiner combiner) {
          return combine(dfa1, dfa2, inputAlphabet, new CompactDFA<>(inputAlphabet), combiner);
      }
docs: Most general way of combining two DFAs. The behavior is the same as of the above {@link #combine(DFA, DFA,
  Collection, MutableDFA, AcceptanceCombiner)}, but the result automaton is automatically created as a {@link
  CompactDFA}.
  
  @param dfa1
  the first DFA
  @param dfa2
  the second DFA
  @param inputAlphabet
  the input alphabet
  @param combiner
  combination method for acceptance values
  
  @return a new DFA representing the combination of the specified DFA