@Override
    public void visitReferenceExpression(@NotNull PsiReferenceExpression expression) {
      if (!myHolder.isOnTheFly()) return;

      PsiElement referenceNameElement = expression.getReferenceNameElement();
      if (referenceNameElement != null) {
        PsiElement resolved = expression.resolve();
        if ((resolved instanceof PsiLocalVariable || resolved instanceof PsiParameter) &&
            !((PsiVariable)resolved).hasModifierProperty(PsiModifier.FINAL) &&
            !SuppressionUtil.inspectionResultSuppressed(resolved, ReassignedVariableInspection.this)) {
          if (resolved instanceof PsiLocalVariable) {
            if (HighlightControlFlowUtil.isReassigned((PsiVariable)resolved, myLocalVariableProblems)) {
              myHolder.registerProblem(referenceNameElement, getReassignedMessage((PsiVariable)resolved));
            }
          }
          else {
            Boolean isReassigned = myParameterIsReassigned.computeIfAbsent((PsiParameter)resolved,
                                                                           HighlightControlFlowUtil::isAssigned);
            if (isReassigned) {
              myHolder.registerProblem(referenceNameElement, getReassignedMessage((PsiVariable)resolved));
            }
          }
        }
      }
    }
@Override
    public void visitReferenceExpression(@NotNull PsiReferenceExpression expression)