@Unmodifiable
  public static @NotNull List<PsiExpression> getSwitchResultExpressions(@NotNull PsiSwitchExpression switchExpression) {
    PsiCodeBlock body = switchExpression.getBody();
    if (body != null) {
      List<PsiExpression> result = new ArrayList<>();
      PsiStatement[] statements = body.getStatements();
      for (PsiStatement statement : statements) {
        if (statement instanceof PsiSwitchLabeledRuleStatement) {
          PsiStatement ruleBody = ((PsiSwitchLabeledRuleStatement)statement).getBody();
          if (ruleBody instanceof PsiExpressionStatement) {
            result.add(((PsiExpressionStatement)ruleBody).getExpression());
          }
          else if (ruleBody instanceof PsiBlockStatement) {
            collectSwitchResultExpressions(result, ruleBody);
          }
        }
        else {
           collectSwitchResultExpressions(result, statement);
        }
      }
      return result;
    }
    return Collections.emptyList();
  }
@Unmodifiable
  public static @NotNull List<PsiExpression> getSwitchResultExpressions(@NotNull PsiSwitchExpression switchExpression)