int (@NotNull StringBuilder sb, @NotNull PsiPolyadicExpression expression, int operandIdx, @Nullable PsiExpression stopAt) { PsiExpression[] operands = expression.getOperands(); for (; operandIdx < operands.length; operandIdx++) { PsiExpression operand = operands[operandIdx]; PsiJavaToken beforeOperand = expression.getTokenBeforeOperand(operand); if (beforeOperand != null) sb.append(beforeOperand.getText()); if (operand == stopAt) break; PsiPolyadicExpression polyadic = ObjectUtils.tryCast(operand, PsiPolyadicExpression.class); if (polyadic != null) { constructExpressionText(sb, polyadic, 0, null); continue; } EliminateUtils.processPrefixed(operand, false, (op, isOpNegated) -> sb.append(op.getText())); } return operandIdx; }