boolean (@NotNull PsiSwitchStatement switchStatement, @NotNull PsiVariable variable, @NotNull Set<MethodSignature> checkedMethods, boolean strict) { final PsiExpression expression = switchStatement.getExpression(); if (expressionAssignsVariableOrFails(expression, variable, checkedMethods, strict)) { return true; } final PsiCodeBlock body = switchStatement.getBody(); if (body == null) { return false; } final PsiStatement[] statements = body.getStatements(); boolean containsDefault = false; boolean assigns = false; for (int i = 0; i < statements.length; i++) { final PsiStatement statement = statements[i]; if (statement instanceof PsiSwitchLabelStatement labelStatement) { if (i == statements.length - 1) { return false; } if (labelStatement.isDefaultCase()) { containsDefault = true; } assigns = false; } else if (statement instanceof PsiBreakStatement breakStatement) { if (breakStatement.getLabelIdentifier() != null) { return false; } if (!assigns) { return false; } assigns = false; } else { assigns |= statementAssignsVariableOrFails(statement, variable, checkedMethods, strict); if (i == statements.length - 1 && !assigns) { return false; } } } return containsDefault; }