void (@NotNull PsiIfStatement ifStatement) { super.visitIfStatement(ifStatement); if (ControlFlowUtils.isElseIf(ifStatement)) { return; } final PsiStatement previousStatement = PsiTreeUtil.getPrevSiblingOfType(ifStatement, PsiStatement.class); if (previousStatement instanceof PsiIfStatement previousIfStatement) { final PsiExpression condition = previousIfStatement.getCondition(); if (chainCheck(condition, null) != Check.NEITHER) { return; } } int numChecks = 0; PsiIfStatement branch = ifStatement; Check check = null; while (true) { final PsiExpression condition = branch.getCondition(); final Check chainCheck = chainCheck(condition, check); if (chainCheck == Check.NEITHER) { if (numChecks > 1) { break; } return; } else { check = chainCheck; } numChecks++; final PsiStatement elseBranch = branch.getElseBranch(); if (elseBranch instanceof PsiIfStatement) { branch = (PsiIfStatement)elseBranch; } else if (elseBranch == null) { final PsiStatement nextStatement = PsiTreeUtil.getNextSiblingOfType(branch, PsiStatement.class); if (!(nextStatement instanceof PsiIfStatement)) { break; } branch = (PsiIfStatement)nextStatement; } else { break; } } if (numChecks < 2) { return; } registerStatementError(ifStatement, check); }