docs: @SafeVarargs
      @SuppressWarnings("varargs")
      public final Either<L, R> merge(BiFunction<? super L, ? super L, ? extends L> leftFn,
                                      BiFunction<? super R, ? super R, ? extends R> rightFn,
                                      Either<L, R>... others) {
          return foldLeft((x, y) -> x.match(l1 -> y.match(l2 -> left(leftFn.apply(l1, l2)), r -> left(l1)),
                                            r1 -> y.match(Either::left, r2 -> right(rightFn.apply(r1, r2)))),
                          this,
                          asList(others));
      }