public static <T> Predicate<T> orPredicates(final List<Predicate<T>> predicates,
                                                final Predicate<T> fallBack) {
        final int count = NullSafe.size(predicates);
        Predicate<T> combinedPredicate = null;
        if (count == 1) {
            combinedPredicate = predicates.getFirst();
        } else if (count == 2) {
            combinedPredicate = orPredicates(predicates.get(0), predicates.get(1));
        } else if (count > 2) {
            combinedPredicate = predicates.stream()
                    .reduce(PredicateUtil::orPredicates)
                    .orElse(obj -> true); // No predicates so return everything
        }
        return Objects.requireNonNullElse(combinedPredicate, fallBack);
    }
Combined the passed predicates together using an OR
If there are no non-null predicates then the returned predicate is an always true one.
stroom-util/src/main/java/stroom/util/PredicateUtil.java