default List<DocRef> find(final String type,
                              final List<String> nameFilters,
                              final boolean allowWildCards) {
        // Default impl that does all filtering in java. Not efficient for DB impls.
        if (NullSafe.isEmptyCollection(nameFilters)) {
            return Collections.emptyList();
        } else {
            // Merge the filters into one predicate
            final Predicate<DocRef> combinedPredicate = nameFilters.stream()
                    .map(nameFilter -> {
                        final Predicate<DocRef> predicate;
                        if (allowWildCards && PatternUtil.containsWildCards(nameFilter)) {
                            final Pattern pattern = PatternUtil.createPatternFromWildCardFilter(
                                    nameFilter, true);
                            predicate = docRef ->
                                    pattern.matcher(docRef.getName()).matches();
                        } else {
                            predicate = docRef ->
                                    nameFilter.equals(docRef.getName());
                        }
                        return predicate;
                    })
                    .reduce(PredicateUtil::orPredicates)
                    .orElse(val -> false); // no filters, no matches

            return list(type)
                    .stream()
                    .filter(combinedPredicate)
                    .collect(Collectors.toList());
        }
    }
Find docRefs by type and one or more nameFilters.
nameFilters can be optionally wild carded using '*' to match 0-many chars.
stroom-docstore/stroom-docstore-impl/src/main/java/stroom/docstore/impl/Persistence.java