void (Statement stat) { for (StatEdge edge : stat.getAllSuccessorEdges()) { if (EdgeType.CONTINUE.equals(edge.getType())) { if (edge.getDestination() != edge.closure) { edge.getDestination().addLabeledEdge(edge); } } else if (EdgeType.BREAK.equals(edge.getType())) { Statement dest = edge.getDestination(); if (dest.type != StatementType.DUMMY_EXIT) { Statement parent = dest.getParent(); List<Statement> lst = new ArrayList<>(); if (parent.type == StatementType.SEQUENCE) { lst.addAll(parent.getStats()); } else if (parent.type == StatementType.SWITCH) { lst.addAll(((SwitchStatement)parent).getCaseStatements()); } for (int i = 0; i < lst.size(); i++) { if (lst.get(i) == dest) { lst.get(i - 1).addLabeledEdge(edge); break; } } } } } for (Statement st : stat.getStats()) { liftClosures(st); } }