@Override
      public void after(@NotNull List<? extends @NotNull VFileEvent> events) {
        Set<VirtualFile> toRefresh = null;

        for (var e : events) {
          if (e.getFileSystem() instanceof LocalFileSystem) {
            String homePath = null;

            if (e instanceof VFileContentChangeEvent cce) {
              var file = cce.getFile();
              if ("release".equals(file.getName())) {
                homePath = file.getParent().getPath();
              }
            }
            else if (e instanceof VFileDeleteEvent de) {
              homePath = de.getFile().getPath();
            }

            if (homePath != null) {
              var handler = myHandlers.remove(homePath);
              if (handler != null) {
                handler.clearCaches();
                var root = findFileByPath(composeRootPath(homePath));
                if (root != null) {
                  ((NewVirtualFile)root).markDirtyRecursively();
                  if (toRefresh == null) toRefresh = new HashSet<>();
                  toRefresh.add(root);
                }
              }
            }
          }
        }

        if (toRefresh != null) {
          var synchronous = ApplicationManager.getApplication().isUnitTestMode();
          RefreshQueue.getInstance().refresh(!synchronous, true, null, toRefresh);
        }
      }
@Override
      public void after(@NotNull List<? extends @NotNull VFileEvent> events)