code: public static List<File> findFile(String pattern, boolean recurse, String ... roots) {
  		List<File> files = new ArrayList<>();
  		if(roots != null) {
  			for(String root : roots) {
  				try {
  					Path path = FileSystems.getDefault().getPath(root);
  					logger.trace("scanning directory {}", path.getFileName());
  					Files.walkFileTree(path, new FileFinderVisitor(pattern, files)); 
  				} catch(IOException e) {
  					logger.trace("error walking directory tree", e);
  				}
  			}
  		}		
  		return files;
  	}
docs: Looks up files whose name matches the given pattern under the given set
  of directories (and, if specified, their sub-directories in a recursive way).
  
  @param pattern
  the name of the file, as a regular expression.
  @param recurse
  whether the finder should recurse to sub-directories.
  @param roots
  a set of one or more directories to scan.
  @return
  a list of <code>File</code> object representing the found files.