jodd-proxetta/src/main/java/jodd/asm7/Label.java
private Label pushSuccessors(final Label listOfLabelsToProcess) {
    Label newListOfLabelsToProcess = listOfLabelsToProcess;
    Edge outgoingEdge = outgoingEdges;
    while (outgoingEdge != null) {
      // By construction, the second outgoing edge of a basic block that ends with a jsr instruction
      // leads to the jsr target (see {@link #FLAG_SUBROUTINE_CALLER}).
      boolean isJsrTarget =
          (flags & Label.FLAG_SUBROUTINE_CALLER) != 0 && outgoingEdge == outgoingEdges.nextEdge;
      if (!isJsrTarget && outgoingEdge.successor.nextListElement == null) {
        // Add this successor to the list of blocks to process, if it does not already belong to a
        // list of labels.
        outgoingEdge.successor.nextListElement = newListOfLabelsToProcess;
        newListOfLabelsToProcess = outgoingEdge.successor;
      }
      outgoingEdge = outgoingEdge.nextEdge;
    }
    return newListOfLabelsToProcess;
  }
private Label pushSuccessors(final Label listOfLabelsToProcess) {
    Label newListOfLabelsToProcess = listOfLabelsToProcess;
    Edge outgoingEdge = outgoingEdges;
    while (outgoingEdge != null) {
      // By construction, the second outgoing edge of a basic block that ends with a jsr instruction
      // leads to the jsr target (see {@link #FLAG_SUBROUTINE_CALLER}).
      boolean isJsrTarget =
          (flags & Label.FLAG_SUBROUTINE_CALLER) != 0 && outgoingEdge == outgoingEdges.nextEdge;
      if (!isJsrTarget && outgoingEdge.successor.nextListElement == null) {
        // Add this successor to the list of blocks to process, if it does not already belong to a
        // list of labels.
        outgoingEdge.successor.nextListElement = newListOfLabelsToProcess;
        newListOfLabelsToProcess = outgoingEdge.successor;
      }
      outgoingEdge = outgoingEdge.nextEdge;
    }
    return newListOfLabelsToProcess;
  }
private Label pushSuccessors ( final Label listOfLabelsToProcess ) { Label newListOfLabelsToProcess = listOfLabelsToProcess ; Edge outgoingEdge = outgoingEdges ; while ( outgoingEdge != null ) { // By construction, the second outgoing edge of a basic block that ends with a jsr instruction // leads to the jsr target (see {@link #FLAG_SUBROUTINE_CALLER}). boolean isJsrTarget = ( flags & Label . FLAG_SUBROUTINE_CALLER ) != 0 && outgoingEdge == outgoingEdges . nextEdge ; if ( ! isJsrTarget && outgoingEdge . successor . nextListElement == null ) { // Add this successor to the list of blocks to process, if it does not already belong to a // list of labels. outgoingEdge . successor . nextListElement = newListOfLabelsToProcess ; newListOfLabelsToProcess = outgoingEdge . successor ; } outgoingEdge = outgoingEdge . nextEdge ; } return newListOfLabelsToProcess ; }
Adds the successors of this label in the method's control flow graph (except those
corresponding to a jsr target, and those already in a list of labels) to the given list of
blocks to process, and returns the new list.

@param listOfLabelsToProcess a list of basic blocks to process, linked together with their
{@link #nextListElement} field.
@return the new list of blocks to process.
Adds the successors of this label in the method s control flow graph ( except those corresponding to a jsr target and those already in a list of labels ) to the given list of blocks to process and returns the new list .