Merge attempts to merge the values corresponding to two consecutive segments. If successful, Merge returns (merged value, true). Otherwise, it returns (unspecified, false). Preconditions: r1.End == r2.Start. Postconditions: If merging succeeds, val1 and val2 are invalidated.
(r1 Range, val1 Value, r2 Range, val2 Value)
| 85 | // |
| 86 | // Postconditions: If merging succeeds, val1 and val2 are invalidated. |
| 87 | Merge(r1 Range, val1 Value, r2 Range, val2 Value) (Value, bool) |
| 88 | |
| 89 | // Split splits a segment's value at a key within its range, such that the |
| 90 | // first returned value corresponds to the range [r.Start, split) and the |
no outgoing calls