@Override
    public void visitReferenceExpression(@NotNull PsiReferenceExpression expression) {
      PsiField field = ObjectUtils.tryCast(expression.resolve(), PsiField.class);
      if (field == null) return;
      PsiType fieldType = field.getType();
      if (PsiTypes.charType().equals(fieldType) || PsiTypes.shortType().equals(fieldType)) {
        PsiElement parent = PsiTreeUtil.skipParentsOfType(expression, PsiParenthesizedExpression.class);
        if (parent instanceof PsiTypeCastExpression) {
          PsiTypeElement castType = ((PsiTypeCastExpression)parent).getCastType();
          if (castType != null && PsiTypes.intType().equals(castType.getType())) {
            myNonVisitedFields.remove(field);
          }
        }
      }
      else {
        myNonVisitedFields.remove(field);
      }
    }
@Override
    public void visitReferenceExpression(@NotNull PsiReferenceExpression expression)