Collection<List<Branch>> (@NotNull PsiSwitchBlock switchBlock) { PsiCodeBlock body = switchBlock.getBody(); if (body == null) return Collections.emptyList(); List<PsiStatement> statementList = null; Comments comments = new Comments(); Branch previousBranch = null; Int2ObjectMap<List<Branch>> branchesByHash = new Int2ObjectOpenHashMap<>(); for (PsiElement child = body.getFirstChild(); child != null; child = child.getNextSibling()) { if (child instanceof PsiSwitchLabelStatement switchLabel) { previousBranch = addBranchToMap(branchesByHash, statementList, hasImplicitBreak(switchLabel), comments, previousBranch); statementList = null; comments.addFrom(switchLabel); } else if (child instanceof PsiStatement statement) { if (statementList == null) { statementList = new ArrayList<>(); } statementList.add(statement); comments.addFrom(statement); } else { comments.addPending(child); } } addBranchToMap(branchesByHash, statementList, true, comments, previousBranch); return List.copyOf(branchesByHash.values()); }