boolean (@NotNull PsiExpression operand, boolean isNegated, PsiExpression... toEliminate) { if (operand instanceof PsiPolyadicExpression) return isPolyadicNegated((PsiPolyadicExpression)operand, isNegated, toEliminate); return processPrefixed(operand, isNegated, (op, isOpNegated) -> { if (!ArrayUtil.contains(operand, toEliminate)) return isOpNegated; PsiPolyadicExpression innerExpr = ObjectUtils.tryCast(PsiUtil.skipParenthesizedExprDown(op), PsiPolyadicExpression.class); if (innerExpr == null) return isOpNegated; return isPolyadicNegated(innerExpr, isOpNegated, toEliminate); }); }