PsiElement (PsiElement element) { PsiFile baseRootFile = getBaseRootFile(element); if (baseRootFile == null) return null; if (!fileInRoots(baseRootFile.getVirtualFile())) return baseRootFile; PsiElement current = element; while (current != null) { if (isSelectable(current) || isTopLevelClass(current)) { break; } current = current.getParent(); } if (current instanceof PsiClassOwner) { PsiClass[] classes = ((PsiClassOwner)current).getClasses(); if (classes.length == 1 && !(classes[0] instanceof SyntheticElement) && isTopLevelClass(classes[0])) { current = classes[0]; } } return current != null ? current : baseRootFile; }