LabelSets (Statement stat) { LabelSets sets = new LabelSets(); if (stat.getExprents() == null) { for (Statement st : stat.getStats()) { LabelSets nested = processStatementLabel(st); sets.breaks.addAll(nested.breaks); sets.continues.addAll(nested.continues); } boolean shieldType = (stat.type == StatementType.DO || stat.type == StatementType.SWITCH); if (shieldType) { for (StatEdge edge : stat.getLabelEdges()) { if (edge.explicit && ((edge.getType() == EdgeType.BREAK && sets.breaks.contains(edge.getSource())) || (edge.getType() == EdgeType.CONTINUE && sets.continues.contains(edge.getSource())))) { edge.labeled = false; } } } switch (stat.type) { case DO: sets.continues.clear(); case SWITCH: sets.breaks.clear(); } } sets.breaks.add(stat); sets.continues.add(stat); return sets; }