Branch (@NotNull Int2ObjectMap<List<Branch>> branchesByHash, @Nullable List<PsiStatement> statementList, boolean hasImplicitBreak, @NotNull Comments comments, @Nullable Branch previousBranch) { if (statementList == null || statementList.isEmpty()) { return previousBranch; } PsiSwitchLabelStatement[] labels = Branch.collectLabels(statementList.get(0)); if (labels.length == 0) { return previousBranch; // the code without a label is not allowed in 'switch', just ignore it } Branch branch = new Branch(labels, statementList, hasImplicitBreak, comments.fetchTexts()); if (!branch.canFallThrough() && (previousBranch == null || !previousBranch.canFallThrough())) { int hash = branch.hash(); List<Branch> branches = branchesByHash.get(hash); if (branches == null) branchesByHash.put(hash, branches = new ArrayList<>()); branches.add(branch); } return branch; }