@Override
    public void visitLiteralExpression(@NotNull PsiLiteralExpression expression) {
      super.visitLiteralExpression(expression);
      final PsiType type = expression.getType();
      if (!ClassUtils.isPrimitiveNumericType(type) || PsiTypes.charType().equals(type)) {
        return;
      }
      if (isSpecialCaseLiteral(expression) || isFinalVariableInitialization(expression)) {
        return;
      }
      if (ignoreInHashCode) {
        final PsiMethod containingMethod = PsiTreeUtil.getParentOfType(expression, PsiMethod.class, true,
                                                                       PsiClass.class, PsiLambdaExpression.class);
        if (MethodUtils.isHashCode(containingMethod)) {
          return;
        }
      }
      if (ignoreInAnnotations) {
        final boolean insideAnnotation = AnnotationUtil.isInsideAnnotation(expression);
        if (insideAnnotation) {
          return;
        }
      }
      if (ignoreInitialCapacity && isInitialCapacity(expression)) {
        return;
      }
      final PsiField field = PsiTreeUtil.getParentOfType(expression, PsiField.class, true, PsiCallExpression.class);
      if (field != null && PsiUtil.isCompileTimeConstant(field)) {
        return;
      }
      final PsiElement parent = expression.getParent();
      if (parent instanceof PsiPrefixExpression) {
        registerError(parent, parent);
      }
      else {
        registerError(expression, expression);
      }
    }
@Override
    public void visitLiteralExpression(@NotNull PsiLiteralExpression expression)