void (@NotNull PsiPolyadicExpression wideExpression) { if (LOG.isDebugEnabled()) { LOG.debug("visitPolyadicExpression " + wideExpression); } CodeFragmentEvaluator oldFragmentEvaluator = setNewCodeFragmentEvaluator(); try { PsiExpression[] operands = wideExpression.getOperands(); operands[0].accept(this); Evaluator result = myResult; PsiType lType = operands[0].getType(); for (int i = 1; i < operands.length; i++) { PsiExpression expression = operands[i]; if (expression == null) { throw expressionInvalid(wideExpression); } expression.accept(this); Evaluator rResult = myResult; IElementType opType = wideExpression.getOperationTokenType(); PsiType rType = expression.getType(); if (rType == null) { throw evaluateException(JavaDebuggerBundle.message("evaluation.error.unknown.expression.type", expression.getText())); } final PsiType typeForBinOp = TypeConversionUtil.calcTypeForBinaryExpression(lType, rType, opType, true); if (typeForBinOp == null) { throw evaluateException(JavaDebuggerBundle.message("evaluation.error.unknown.expression.type", wideExpression.getText())); } myResult = createBinaryEvaluator(result, lType, rResult, rType, opType, typeForBinOp); lType = typeForBinOp; result = myResult; } } finally { myCurrentFragmentEvaluator = oldFragmentEvaluator; } }