void (@NotNull PsiIfStatement statement) { super.visitIfStatement(statement); final PsiStatement thenBranch = statement.getThenBranch(); if (thenBranch == null) { return; } final PsiStatement elseBranch = statement.getElseBranch(); if (elseBranch == null) { return; } if (ControlFlowUtils.statementMayCompleteNormally(thenBranch)) { return; } if (!reportWhenNoStatementFollow) { final PsiStatement nextStatement = getNextStatement(statement); if (nextStatement == null) { return; } if (!ControlFlowUtils.statementMayCompleteNormally(elseBranch)) { return; // protecting against an edge case where both branches return // and are followed by a case label } } final PsiElement elseToken = statement.getElseElement(); if (elseToken == null) { return; } if (parentCompletesNormally(statement)) { return; } registerError(elseToken); }