boolean (@NotNull VirtualFile rootCandidate, @NotNull final ProgressIndicator progressIndicator) { if (isJarDirectory()) { if (!rootCandidate.isDirectory() || !rootCandidate.isInLocalFileSystem()) { return false; } for (VirtualFile child : rootCandidate.getChildren()) { if (!child.isDirectory() && FileTypeRegistry.getInstance().isFileOfType(child, ArchiveFileType.INSTANCE)) { final VirtualFile jarRoot = JarFileSystem.getInstance().getJarRootForLocalFile(child); if (jarRoot != null && containsFileOfType(jarRoot, progressIndicator)) { return true; } } } return false; } else { return containsFileOfType(rootCandidate, progressIndicator); } }