PsiElement (PsiElement psiElement) { PsiFile containingFile = psiElement.getContainingFile(); if (containingFile != null) { PsiDirectory containingDirectory = containingFile.getContainingDirectory(); if (containingDirectory != null) { return containingDirectory; } } else if (psiElement instanceof PsiDirectory psiDirectory) { Project project = psiElement.getProject(); PsiDirectory parentDirectory = psiDirectory.getParentDirectory(); if (parentDirectory == null) { VirtualFile jar = VfsUtil.getLocalFile(psiDirectory.getVirtualFile()); if (ProjectRootManager.getInstance(project).getFileIndex().isInContent(jar)) { parentDirectory = PsiManager.getInstance(project).findDirectory(jar.getParent()); } } return parentDirectory; } else if (psiElement instanceof PsiFileSystemItem) { VirtualFile virtualFile = ((PsiFileSystemItem)psiElement).getVirtualFile(); if (virtualFile == null) return null; PsiManager psiManager = psiElement.getManager(); PsiElement resultElement; if (virtualFile.isDirectory()) { resultElement = psiManager.findDirectory(virtualFile); } else { resultElement = psiManager.findFile(virtualFile); } if (resultElement == null) return null; VirtualFile parentVFile = virtualFile.getParent(); if (parentVFile != null) { PsiDirectory parentDirectory = psiManager.findDirectory(parentVFile); if (parentDirectory != null) { return parentDirectory; } } } return null; }