code: @SafeVarargs
      public static <T, R> Function<T, Optional<R>> maybeFirstMatch(Clause<T, R>... clauses) {
          return new MaybeFirstMatchStrategy<>(Arrays.asList(clauses));
      }
docs: Given some {@code Clause}s returns a function that forwards the result of the
  first clause which condition is true, of an empty {@code Optional} if no
  clause matches the condition.