Set<PsiBreakStatement> (@NotNull PsiStatement targetStatement) { if (breakStatements == null) { breakStatements = new HashMap<>(); List<Instruction> instructions = flow.getInstructions(); for (int i = 0; i < instructions.size(); i++) { PsiElement element = flow.getElement(i); PsiStatement statement = getNearestEnclosingStatement(element); if (statement instanceof PsiBreakStatement) { PsiStatement exitedStatement = ((PsiBreakStatement)statement).findExitedStatement(); if (exitedStatement != null) { breakStatements.computeIfAbsent(exitedStatement, unused -> new HashSet<>()).add((PsiBreakStatement)statement); } } } } Set<PsiBreakStatement> breaks = breakStatements.get(targetStatement); return breaks != null ? breaks : Collections.emptySet(); }