void (@NotNull PsiPolyadicExpression expression) { startElement(expression); DfaValue dfaValue = JavaDfaValueFactory.getExpressionDfaValue(myFactory, expression); if (dfaValue != null) { push(dfaValue, expression); finishElement(expression); return; } PsiExpression[] operands = expression.getOperands(); if (operands.length <= 1) { pushUnknown(); finishElement(expression); return; } IElementType op = expression.getOperationTokenType(); if (op == JavaTokenType.ANDAND) { generateShortCircuitAndOr(expression, operands, expression.getType(), true); } else if (op == JavaTokenType.OROR) { generateShortCircuitAndOr(expression, operands, expression.getType(), false); } else { generateBinOpChain(expression, op, operands); } finishElement(expression); }