public ExecutionStack merge(ExecutionStack other) {
    try {
      return Merger.mergeStack(this, other);
    } catch (SimException ex) {
      ex.addContext("underlay stack:");
      this.annotate(ex);
      ex.addContext("overlay stack:");
      other.annotate(ex);
      throw ex;
    }
  }
Merges this stack with another stack. A new instance is returned if this merge results in a
change. If no change results, this instance is returned. See {@link
Merger#mergeStack(ExecutionStack, ExecutionStack) Merger.mergeStack()}

@param other {@code non-null;} a stack to merge with
@return {@code non-null;} the result of the merge
android/android_framework/dex-maker/src/main/java/com/android/dx/cf/code/ExecutionStack.java