private IntList mergeSubroutineLists(IntList otherSubroutines) {
    if (subroutines.equals(otherSubroutines)) {
      return subroutines;
    }

    IntList resultSubroutines = new IntList();

    int szSubroutines = subroutines.size();
    int szOthers = otherSubroutines.size();
    for (int i = 0;
        i < szSubroutines && i < szOthers && (subroutines.get(i) == otherSubroutines.get(i));
        i++) {
      resultSubroutines.add(i);
    }

    resultSubroutines.setImmutable();

    return resultSubroutines;
  }
Merges this frame's subroutine lists with another. The result is the deepest common nesting
(effectively, the common prefix of the two lists).

@param otherSubroutines label list of subroutine start blocks, from least-nested to
    most-nested.
@return {@code non-null;} merged subroutine nest list as described above
android/android_framework/dex-maker/src/main/java/com/android/dx/cf/code/Frame.java