@Nullable
  private static NullabilityProblem<?> getSwitchBlockProblem(@NotNull PsiSwitchBlock switchBlock,
                                                             @NotNull PsiExpression expression,
                                                             @NotNull PsiExpression context) {
    // if switch contains null label, then we shouldn't check nullity of the expr
    PsiCodeBlock body = switchBlock.getBody();
    if (body != null) {
      PsiStatement[] statements = body.getStatements();
      for (PsiStatement statement : statements) {
        PsiSwitchLabelStatementBase labelStatement = tryCast(statement, PsiSwitchLabelStatementBase.class);
        if (labelStatement == null) continue;
        PsiCaseLabelElementList labelElementList = labelStatement.getCaseLabelElementList();
        if (labelElementList == null) continue;
        for (PsiCaseLabelElement element : labelElementList.getElements()) {
          if (element instanceof PsiExpression caseExpression && TypeConversionUtil.isNullType(caseExpression.getType())) return null;
        }
      }
    }
    NullabilityProblem<PsiElement> problem = createUnboxingProblem(context, expression);
    return problem == null ? fieldAccessNPE.problem(context, expression) : problem;
  }
@Nullable
  private static NullabilityProblem<?> getSwitchBlockProblem(@NotNull PsiSwitchBlock switchBlock,
                                                             @NotNull PsiExpression expression,
                                                             @NotNull PsiExpression context)