static void registerChangeVariableTypeFixes(@NotNull PsiExpression expression,
                                              @NotNull PsiType type,
                                              @Nullable PsiExpression lExpr,
                                              @Nullable HighlightInfo.Builder highlightInfo) {
    if (highlightInfo == null || !(expression instanceof  PsiReferenceExpression)) return;

    PsiElement element = ((PsiReferenceExpression)expression).resolve();
    if (!(element instanceof PsiVariable)) return;

    registerChangeVariableTypeFixes((PsiVariable)element, type, lExpr, highlightInfo);

    PsiExpression stripped = PsiUtil.skipParenthesizedExprDown(lExpr);
    if (stripped instanceof PsiMethodCallExpression && lExpr.getParent() instanceof PsiAssignmentExpression) {
      PsiElement parent = lExpr.getParent();
      if (parent.getParent() instanceof PsiStatement) {
        PsiMethod method = ((PsiMethodCallExpression)stripped).resolveMethod();
        if (method != null && PsiTypes.voidType().equals(method.getReturnType())) {
          highlightInfo.registerFix(new ReplaceAssignmentFromVoidWithStatementIntentionAction(parent, stripped), null, null, null, null);
        }
      }
    }
  }
static void registerChangeVariableTypeFixes(@NotNull PsiExpression expression,
                                              @NotNull PsiType type,
                                              @Nullable PsiExpression lExpr,
                                              @Nullable HighlightInfo.Builder highlightInfo)