boolean (DoStatement stat) { // search for an if condition at the end of the loop Statement last = stat.getFirst(); while (last.type == StatementType.SEQUENCE) { last = last.getStats().getLast(); } if (last.type == StatementType.IF) { IfStatement lastif = (IfStatement)last; if (lastif.iftype == IfStatement.IFTYPE_IF && lastif.getIfstat() != null) { Statement ifstat = lastif.getIfstat(); StatEdge elseedge = lastif.getAllSuccessorEdges().get(0); if (elseedge.getType() == EdgeType.CONTINUE && elseedge.closure == stat) { Set<Statement> set = stat.getNeighboursSet(EdgeType.CONTINUE, EdgeDirection.BACKWARD); set.remove(last); if (set.isEmpty()) { // no direct continues in a do{}while loop if (isExternStatement(stat, ifstat, ifstat)) { extractIfBlock(stat, lastif); return true; } } } } } return false; }