@NonNls
  String calculateReplacementExpression(PsiPolyadicExpression expression, @Nullable CommentTracker ct) {
    final PsiExpression[] operands = expression.getOperands();
    final IElementType tokenType = expression.getOperationTokenType();
    final PsiType type = expression.getType();
    final List<PsiExpression> expressions = collectSalientOperands(operands, tokenType, type);
    final PsiJavaToken token = expression.getTokenBeforeOperand(operands[1]);
    assert token != null;
    String prefix = "";
    if (isZero(expressions.get(0)) && expressions.size() > 1 && JavaTokenType.MINUS == token.getTokenType()) {
      expressions.remove(0);
      prefix = "- ";
    }
    final String delimiter = " " + token.getText() + " ";
    final String result =
      prefix + expressions.stream().map(e -> ct == null ? e.getText() : ct.textWithComments(e)).collect(Collectors.joining(delimiter));
    final boolean castToLongNeeded = ct != null && TypeConversionUtil.isLongType(type) &&
                                     !ContainerUtil.exists(expressions, x -> TypeConversionUtil.isLongType(x.getType()));
    return castToLongNeeded ? "(long)" + result : result;
  }
@NonNls
  String calculateReplacementExpression(PsiPolyadicExpression expression, @Nullable CommentTracker ct)