void (@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); if (result instanceof PsiTemplateExpression template) { replaceRedundantEmbeddedExpression(template); } }