void (@NotNull PsiField field) { //no call to super, so we don't drill into anonymous classes if (!field.hasModifierProperty(PsiModifier.STATIC) || !field.hasModifierProperty(PsiModifier.PUBLIC) || !field.hasModifierProperty(PsiModifier.FINAL)) { return; } final PsiClass containingClass = field.getContainingClass(); if (containingClass == null) { return; } if (containingClass.isInterface() || containingClass.isAnnotationType() || containingClass.isEnum()) { return; } if (!containingClass.hasModifierProperty(PsiModifier.ABSTRACT)) { return; } registerFieldError(field); }