private boolean addOrReplaceBlockNoDelete(BasicBlock block, IntList subroutines) {
    if (block == null) {
      throw new NullPointerException("block == null");
    }

    int idx = labelToResultIndex(block.getLabel());
    boolean ret;

    if (idx < 0) {
      ret = false;
    } else {
      result.remove(idx);
      resultSubroutines.remove(idx);
      ret = true;
    }

    result.add(block);
    subroutines.throwIfMutable();
    resultSubroutines.add(subroutines);
    return ret;
  }
Adds or replaces a block in the output result. Do not delete any successors.

@param block {@code non-null;} the block to add or replace
@param subroutines {@code non-null;} subroutine label list as described in {@link
    Frame#getSubroutines}
@return {@code true} if the block was replaced or {@code false} if it was added for the first
    time
android/android_framework/dex-maker/src/main/java/com/android/dx/cf/code/Ropper.java