public Iterable<JavaFileObject> getFiles(String folderName, ClassPath.Entry entry, Set<JavaFileObject.Kind> kinds, JavaFileFilterImplementation filter) throws IOException { FileObject folder = root.getFileObject(folderName); if (folder == null || !(entry == null || entry.includes(folder))) { return Collections.<JavaFileObject>emptySet(); } FileObject[] children = folder.getChildren(); List<JavaFileObject> result = new ArrayList<JavaFileObject>(children.length); for (FileObject fo : children) { if (fo.isData() && (entry == null || entry.includes(fo))) { final Kind kind = FileObjects.getKind(fo.getExt()); if (kinds == null || kinds.contains (kind)) { JavaFileObject file; if (kind == Kind.CLASS) { file = FileObjects.fileObjectFileObject(fo, root, filter, null); } else { file = FileObjects.sourceFileObject(fo, root, filter,false); } result.add(file); } } } return result; }