void (@NotNull VirtualFile file, @NotNull Object source, @NotNull Object reason) { VirtualFileSystemEntry root = (VirtualFileSystemEntry)file; if (root.isDirectory()) { Queue<VirtualFile> queue = new ArrayDeque<>(root.getCachedChildren()); while (!queue.isEmpty()) { VirtualFileSystemEntry child = (VirtualFileSystemEntry)queue.remove(); queue.addAll(child.getCachedChildren()); doInvalidate(child, source, reason); } } doInvalidate(root, source, reason); }