void (@NotNull Project project, @NotNull List<? extends VirtualFile> files, @NotNull AnActionEvent e) { VirtualFile projectBasePath = getBasePathAsVirtualFile(project); if (projectBasePath == null) return; DiscoveredTestsTree tree = showTree(project, e.getDataContext(), createTitle(files), e.getPlace()); FeatureUsageTracker.getInstance().triggerFeatureUsed("test.discovery"); ApplicationManager.getApplication().executeOnPooledThread(() -> { JBIterable<String> paths = JBIterable .from(files) .flatMap(f -> VfsUtil.collectChildrenRecursively(f)) .map(f -> VcsFileUtil.getRelativeFilePath(f, projectBasePath)) .filter(Objects::nonNull) .map(p -> "/" + p); if (paths.isNotEmpty()) { processMethodsAsync(project, PsiMethod.EMPTY_ARRAY, paths.toList(), createTreeProcessor(tree), () -> tree.setPaintBusy(false)); } }); }