private static void getClassesFromDir(Collection<String> classes, File root, File dir, String pkg, Pattern regex,
Class<? extends Annotation>[] annotated, Predicate<InputStream> bytecodeFilter, AtomicInteger searched) {
U.must(dir.isDirectory());
Log.trace("Traversing directory", "root", root, "dir", dir);
File[] files = dir.listFiles();
if (files == null) {
Log.warn("Not a folder!", "dir", dir);
return;
}
for (File file : files) {
if (file.isDirectory()) {
getClassesFromDir(classes, root, file, pkg, regex, annotated, bytecodeFilter, searched);
} else {
String rootPath = Str.trimr(root.getAbsolutePath(), File.separatorChar);
int from = rootPath.length() + 1;
String relName = file.getAbsolutePath().substring(from);
if (!ignore(relName)) {
scanFile(classes, regex, annotated, bytecodeFilter, relName, file, null, null, searched);
}
}
}
}