List<PsiFileSystemItem> (@NotNull Project project, @NotNull VirtualFile file, boolean includeMissingPackages) { PsiFileSystemItem item = getPsiFileSystemItem(project, file); if (item != null) { PsiFileSystemItem parent = item.getParent(); if (parent != null) { ProjectFileIndex index = ProjectRootManager.getInstance(project).getFileIndex(); VirtualFile parentFile = parent.getVirtualFile(); assert parentFile != null; VirtualFile root = index.getSourceRootForFile(parentFile); if (root != null) { String path = VfsUtilCore.getRelativePath(parentFile, root, '.'); if (path != null) { Module module = index.getModuleForFile(file); if (module != null) { OrderEntry orderEntry = ModuleRootManager.getInstance(module).getFileIndex().getOrderEntryForFile(file); String rootPackagePrefix = getSourceRootPackagePrefix(orderEntry, root); if (!rootPackagePrefix.isEmpty()) { path += "." + rootPackagePrefix; } List<PsiFileSystemItem> contextsForModule = getContextsForModule(module, path, module.getModuleWithDependenciesScope()); if (!includeMissingPackages) { return contextsForModule; } return getAdditionalContexts(parentFile, root, module, contextsForModule); } } } return singletonList(parent); } } return emptyList(); }