static void onNewFileInDir(final File dir, int interval, final VF1 onNewFile) { doEvery(interval, new Runnable { Set files = asHashSet(listFiles(dir)); public void run { L newFiles = listFiles(dir); for (File f : newFiles) if (!files.contains(f)) pcallF(onNewFile, f); files = newFiles; } }); }