void (@Nullable VirtualFile file) { Set<VirtualFile> files; boolean start = false; synchronized (reference) { files = reference.get(); if (files == null) { files = new SmartHashSet<>(); time = System.currentTimeMillis(); reference.set(files); start = true; } if (file == null) { root = true; } else if (files.add(file) && LOG.isTraceEnabled()) { LOG.debug("mark file ", file, " to update @ ", invoker); } size = files.size(); } if (start) { LOG.debug("start collecting files to update @ ", invoker); invoker.invokeLater(() -> onInvokerThread(false), getUpdatingDelay()); } }