code: private Collection<FsItemEx> findRecursively(FsItemFilter filter,
  			FsItem root)
  	{
  		List<FsItemEx> results = new ArrayList<FsItemEx>();
  		FsVolume vol = root.getVolume();
  		for (FsItem child : vol.listChildren(root))
  		{
  			if (vol.isFolder(child))
  			{
  				results.addAll(findRecursively(filter, child));
  			}
  			else
  			{
  				FsItemEx item = new FsItemEx(child, this);
  				if (filter.accepts(item))
  					results.add(item);
  			}
  		}
  
  		return results;
  	}
docs: find files recursively in specific folder
  
  @param filter
  The filter to apply to select files.
  @param root
  The location in the hierarchy to search from.
  @return A collection of files that match the filter and have the root as
  a parent.