void (PsiFile file, RootVisitor visitor) { // formality final VirtualFile elt_vfile = file.getOriginalFile().getVirtualFile(); List<OrderEntry> orderEntries = null; if (elt_vfile != null) { // reality TODO: check this reality final ProjectFileIndex fileIndex = ProjectRootManager.getInstance(file.getProject()).getFileIndex(); orderEntries = fileIndex.getOrderEntriesForFile(elt_vfile); if (orderEntries.size() > 0) { for (OrderEntry entry : orderEntries) { if (!visitOrderEntryRoots(visitor, entry)) break; } } else { orderEntries = null; } } // out-of-project file or non-file(e.g. console) - use roots of SDK assigned to project if (orderEntries == null) { final Sdk sdk = ProjectRootManager.getInstance(file.getProject()).getProjectSdk(); if (sdk != null) { visitSdkRoots(sdk, visitor); } } }