scope jdk_watchService_start. static new Flag #started; static new MultiMap #listeners; static WatchService jdk_watchService_start() { final WatchService service = jdk_defaultWatchService(); if (jdk_defaultWatchService_start_started.raise()) thread "Watch Service" { while licensed { WatchKey key = service.poll(10, TimeUnit.SECONDS); if (key != null) { for (WatchEvent event : wk.pollEvents()) pcall { final Path changed = (Path) event.context(); print("WatchService Changed: " + changed + ", " + event.kind()); pcallFAll(listeners.get(key), changed.toFile()); } key.reset(); } } } ret service; } end scope