private BasicBlock convertBasicBlock(SsaBasicBlock block) {
    IntList successorList = block.getRopLabelSuccessorList();
    int primarySuccessorLabel = block.getPrimarySuccessorRopLabel();

    // Filter out any reference to the SSA form's exit block.

    // Exit block may be null.
    SsaBasicBlock exitBlock = ssaMeth.getExitBlock();
    int exitRopLabel = (exitBlock == null) ? -1 : exitBlock.getRopLabel();

    if (successorList.contains(exitRopLabel)) {
      if (successorList.size() > 1) {
        throw new RuntimeException(
            "Exit predecessor must have no other successors" + Hex.u2(block.getRopLabel()));
      } else {
        successorList = IntList.EMPTY;
        primarySuccessorLabel = -1;

        verifyValidExitPredecessor(block);
      }
    }

    successorList.setImmutable();

    BasicBlock result =
        new BasicBlock(
            block.getRopLabel(),
            convertInsns(block.getInsns()),
            successorList,
            primarySuccessorLabel);

    return result;
  }
Converts a single basic block to rop form.

@param block SSA block to process
@return {@code non-null;} ROP block
android/android_framework/dex-maker/src/main/java/com/android/dx/ssa/back/SsaToRop.java