void () { LOG.debug("launch"); if (disposed.get() || launched.getAndSet(true)) return; RefreshSession session; synchronized (files) { if (this.session != null || files.isEmpty()) return; ModalityState state = producer.produce(); LOG.debug("modality state ", state); session = RefreshQueue.getInstance().createSession(true, recursive, this::finish, state); session.addAllFiles(files); this.session = session; } scheduled.set(false); launched.set(false); LOG.debug("launched at ", System.currentTimeMillis()); session.launch(); }