code: public static List<File> resolveRecursively(final List<File> files,
                                                  final List<Filter<File>> exclusionFilters,
                                                  final Log log) {
  
          // Check sanity
          Validate.notNull(files, "files");
  
          final List<Filter<File>> effectiveExclusions = exclusionFilters == null
                  ? new ArrayList<Filter<File>>()
                  : exclusionFilters;
  
          final List<File> toReturn = new ArrayList<File>();
  
          if (files.size() > 0) {
              for (File current : files) {
  
                  final boolean isAcceptedFile = EXISTING_FILE.accept(current)
                          && Filters.noFilterMatches(current, effectiveExclusions);
                  final boolean isAcceptedDirectory = EXISTING_DIRECTORY.accept(current)
                          && Filters.noFilterMatches(current, effectiveExclusions);
  
                  if (isAcceptedFile) {
                      toReturn.add(current);
                  } else if (isAcceptedDirectory) {
                      recurseAndPopulate(toReturn, effectiveExclusions, current, true, log);
                  }
              }
          }
  
          // All done
          return toReturn;
      }
docs: Retrieves a List of Files containing all the existing files within the supplied files List, including all
  files found in directories recursive to any directories provided in the files list. Each file included in the
  result must pass an ExclusionRegExpFileFilter synthesized from the supplied exclusions pattern(s).
  
  @param files            The list of files to resolve, filter and return. If the {@code files} List
  contains directories, they are searched for Files recursively. Any found Files in such
  a search are included in the resulting File List if they do not match any of the
  exclusionFilters supplied.
  @param exclusionFilters A List of Filters which identify files to remove from the result - implying that any
  File matched by any of these exclusionFilters will not be included in the result.
  @param log              The active Maven Log.
  @return All files in (or files in subdirectories of directories provided in) the files List, provided that each
  file is accepted by an ExclusionRegExpFileFilter.