@Override
    public void visitField(@NotNull PsiField field) {
      super.visitField(field);
      if (!field.hasInitializer() || field.hasModifierProperty(PsiModifier.FINAL)) {
        return;
      }
      final PsiExpression initializer = field.getInitializer();
      if (initializer == null) {
        return;
      }
      final PsiType type = field.getType();
      if (PsiTypes.booleanType().equals(type)) {
        if (onlyWarnOnNull || !ExpressionUtils.isLiteral(PsiUtil.skipParenthesizedExprDown(initializer), false)) {
          return;
        }
      }
      else if (type instanceof PsiPrimitiveType) {
        if (onlyWarnOnNull || !ExpressionUtils.isZero(initializer)) {
          return;
        }
      }
      else if (!PsiTypes.nullType().equals(initializer.getType())) {
        return;
      }
      if (initializer instanceof PsiReferenceExpression ||
          !PsiTreeUtil.findChildrenOfType(initializer, PsiReferenceExpression.class).isEmpty()) {
        return;
      }
      if (isAssignmentInInitializerOverwritten(field)) {
        return;
      }
      registerError(initializer);
    }
@Override
    public void visitField(@NotNull PsiField field)