void (Statement stat, HashSet<StatEdge> edges) { boolean ok = (stat.type != StatementType.DO); if (!ok) { DoStatement dostat = (DoStatement)stat; ok = dostat.getLoopType() == LoopType.DO || dostat.getLoopType() == LoopType.WHILE || (dostat.getLoopType() == LoopType.FOR && dostat.getIncExprent() == null); } if (ok) { edges.addAll(stat.getPredecessorEdges(EdgeType.CONTINUE)); } if (ok && stat.type == StatementType.DO) { for (StatEdge edge : edges) { if (stat.containsStatementStrict(edge.getSource())) { edge.getDestination().removePredecessor(edge); edge.getSource().changeEdgeNode(EdgeDirection.FORWARD, edge, stat); stat.addPredecessor(edge); stat.addLabeledEdge(edge); } } } for (Statement st : stat.getStats()) { if (st == stat.getFirst()) { lowContinueLabels(st, edges); } else { lowContinueLabels(st, new HashSet<>()); } } }