private static void liftClosures(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);
    }
  }
private static void liftClosures(Statement stat)