String (PsiPolyadicExpression expression, PsiElement fromTarget, PsiElement untilTarget, @NotNull @NonNls String replacement, CommentTracker ct) { final StringBuilder result = new StringBuilder(); boolean stop = false; for (PsiElement child = expression.getFirstChild(); child != null; child = child.getNextSibling()) { if (child == fromTarget) { stop = true; result.append(replacement); } else if (child == untilTarget) { stop = false; } else if (child instanceof PsiComment && !result.isEmpty() || !stop) { result.append(ct.text(child)); } else if (child instanceof PsiJavaToken && untilTarget == null) { stop = false; } } return result.toString(); }