void (@NotNull PsiPolyadicExpression expression) { super.visitPolyadicExpression(expression); final IElementType sign = expression.getOperationTokenType(); if (!bitwiseTokens.contains(sign)) { return; } if (PsiUtilCore.hasErrorElementChild(expression)) { return; } final PsiExpression[] operands = expression.getOperands(); for (PsiExpression operand : operands) { if (operand == null) { return; } final PsiType type = operand.getType(); if (type == null || type.equals(PsiTypes.booleanType()) || type.equalsToText(CommonClassNames.JAVA_LANG_BOOLEAN)) { return; } } final boolean isPointless; if (sign.equals(AND) || sign.equals(OR) || sign.equals(XOR)) { isPointless = booleanExpressionIsPointless(operands); } else if (ExpressionParser.SHIFT_OPS.contains(sign)) { isPointless = shiftExpressionIsPointless(operands); } else { isPointless = false; } if (!isPointless) { return; } registerError(expression, expression); }