@Override
    protected void applyFix(@NotNull Project project, @NotNull PsiElement element, @NotNull ModPsiUpdater updater) {
      PsiExpression expression = PsiUtil.skipParenthesizedExprDown(tryCast(element, PsiExpression.class));
      if (expression == null) return;
      PsiPolyadicExpression polyadicExpression = tryCast(expression, PsiPolyadicExpression.class);
      if (polyadicExpression == null || !ExpressionUtils.hasStringType(polyadicExpression)) return;
      String stringTemplate = buildReplacementStringTemplate(polyadicExpression);
      if (stringTemplate == null) return;
      CommentTracker tracker = new CommentTracker();
      PsiElement result = tracker.replaceAndRestoreComments(polyadicExpression, stringTemplate);
      result = JavaCodeStyleManager.getInstance(project).shortenClassReferences(result);
      if (result instanceof PsiTemplateExpression template) {
        replaceRedundantEmbeddedExpression(template);
      }
    }
@Override
    protected void applyFix(@NotNull Project project, @NotNull PsiElement element, @NotNull ModPsiUpdater updater)