static L findAllFiles(L dirs) { ret findAllFiles(asObjectArray(dirs)); } // dirs are String's or File's static L findAllFiles(O... dirs) { new L l; for (O dir : dirs) { if (dir cast S && dir.endsWith("/.")) // "/." means non-recurse for (File f : listFiles(dropSuffix("/.", dir))) l.add(f); else findAllFiles_impl(toFile(dir), l); } ret l; } static void findAllFiles_impl(File dir, L l) { for (File f : listFiles(dir)) { l.add(f); if (f.isDirectory()) findAllFiles_impl(f, l); } }