private static void liftBreakLabels(Statement stat) {

    for (Statement st : stat.getStats()) {
      liftBreakLabels(st);
    }


    while (true) {

      boolean found = false;

      for (StatEdge edge : stat.getLabelEdges()) {
        if (edge.explicit && edge.labeled && edge.getType() == StatEdge.TYPE_BREAK) {

          Statement newclosure = getMaxBreakLift(stat, edge);

          if (newclosure != null) {
            newclosure.addLabeledEdge(edge);
            edge.labeled = isBreakEdgeLabeled(edge.getSource(), newclosure);

            found = true;
            break;
          }
        }
      }

      if (!found) {
        break;
      }
    }
  }