@Override
    public void visitField(@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);
    }
@Override
    public void visitField(@NotNull PsiField field)