zipRuns

Given the receiver, which is a RunTree<Value>, and the otherTree, which is a RunTree<OtherValue>, produce an aggregate RunTree<Pair<Value?, OtherValue?>. The ranges will be split as needed to ensure that the spans in the output have:

  1. the same Pair.first as the value in the receiver (or null if there was no such range in the receiver), and

  2. the same Pair.second as the value in the otherTree (or null if there was no such range in the otherTree.

The Pair (null, null) will not occur in the output.