code: public static <L1, L2, I> OneSEVPA<Pair<L1, L2>, I> combine(final OneSEVPA<L1, I> sevpa1,
                                                                  final OneSEVPA<L2, I> sevpa2,
                                                                  final VPDAlphabet<I> alphabet,
                                                                  final AcceptanceCombiner combiner) {
          return new ProductOneSEVPA<>(alphabet, sevpa1, sevpa2, combiner);
      }
docs: Most general way of combining two SEVPAs. The {@link AcceptanceCombiner} specified via the {@code combiner}
  parameter specifies how acceptance values of the SEVPAs will be combined to an acceptance value in the result
  SEVPAs.
  
  @param sevpa1
  the first SEVPA
  @param sevpa2
  the second SEVPA
  @param alphabet
  the input alphabet
  @param combiner
  combination method for acceptance values
  
  @return a new SEVPA representing the conjunction of the specified SEVPA