code: @SafeVarargs
      public static <T, U, R> BiFunction<T, U, Optional<R>> maybeFirstMatch(BinaryClause<T, U, R>... clauses) {
          final List<Clause<Pair<T, U>, R>> unaryClauses = Sequences.of(clauses).map(BinaryClause::tupled).toList();
          return Pairs.untupled(new MaybeFirstMatchStrategy<>(unaryClauses));
      }
docs: Given some {@code Clause}s returns a binary function that forwards the result of
  the first clause which condition is true, of an empty {@code Optional} if
  no clause matches the condition.