AccessModifier (PsiMethod method) { if (method.isConstructor() || method.hasModifierProperty(PsiModifier.STATIC)) return PRIVATE; HierarchicalMethodSignature signature = method.getHierarchicalMethodSignature(); AccessModifier lowest = PRIVATE; for (HierarchicalMethodSignature superSignature : signature.getSuperSignatures()) { PsiMethod superMethod = superSignature.getMethod(); AccessModifier current = fromModifierList(superMethod.getModifierList()); if (!current.isWeaker(lowest)) continue; if (method.hasModifierProperty(PsiModifier.ABSTRACT) && !MethodSignatureUtil.isSuperMethod(superMethod, method)) continue; if (!PsiUtil.isAccessible(method.getProject(), superMethod, method, null)) continue; lowest = current; if (lowest == PUBLIC) { break; } } return lowest; }