         let sc = sb + self[b1].head
         precondition(ordered((self, b1, sb), before: (tree, c2, sc)))
 
+        self.reserveCapacity(self.count + tree.count)
         var summary = sc
         var previous1 = b1
         var next2: Handle? = c2

        var summary = summaryOfLeftSubtree(handle)
        while case .Toward(let direction, under: let parent) = slotOf(handle) {
            if direction == .Right {
                summary = summaryOfLeftSubtree(parent) + self[parent].summary + summary
            }
            handle = parent
        }


    public mutating func removeAll(keepCapacity keepCapacity: Bool = false) {
        nodes.removeAll(keepCapacity: keepCapacity)
        root = nil
        leftmost = nil
        rightmost = nil
    }
    
    /// Remove the node at `handle`, invalidating all existing handles.
