boolean (@NotNull PsiExpression expr) { if (BoolUtils.isNegated(expr)) { // It's enough to report for parent only return false; } if (expr instanceof PsiAssignmentExpression) { // Report right hand of assignment only return false; } if (expr instanceof PsiPolyadicExpression) { IElementType tokenType = ((PsiPolyadicExpression)expr).getOperationTokenType(); if (BOOLEAN_TOKENS.contains(tokenType)) { PsiExpression firstOperand = ((PsiPolyadicExpression)expr).getOperands()[0]; if (firstOperand != null && PsiTypes.booleanType().equals(firstOperand.getType())) { // For polyadic boolean expression let's report components only, otherwise the report gets cluttered return false; } } } return true; }