public void processShortcuts() {
         Collection<Node> branches = new HashSet<Node>();
         for (Node node : getNodes()) {
             if (node.isBranch()) branches.add(node);
         }
         
         L: while (true) {
             Iterator<Node> iter = branches.iterator();
             while (iter.hasNext()) {
                 Node branch = iter.next();
                 for (Node node: branch.succs()) {
                     if (node.isBranch() && performAndOrShortcut(branch, node)) {
                         branches.remove(node);
                         continue L;
                     }
                 }
             }
             break L;
         }
         
     }