 ;;          /|\    /|\/|\/ \
 ;;     >   U x[U]  ####### #
 ;;
+;; Two underflowing partitions need to be merged into a valid partition:
+;;
+;;             ...O...
+;;            /       \
+;;           O        .O.
+;;           |       / | \
+;;           *      O  O  O
+;;           |     /|\/|\/ \
+;;     >  [->@<-]  ####### #
+;;
+;;             ...O...
+;;            /       \
+;;           O        .O.
+;;           |       / | \
+;;     >    [@]     O  O  O
+;;                 /|\/|\/ \
+;;                 ####### #
+;;
+;;             ...O...
+;;            /       \
+;;     >    [@]       .O.
+;;                   / | \
+;;                  O  O  O
+;;                 /|\/|\/ \
+;;                 ####### #
+;;
+;;     >     (@)[O]
+;;               |
+;;             ..O..
+;;            /  |  \
+;;           O   O   O
+;;          /|\ /|\ / \
+;;          ### ### # #
+;;
+;;               O
+;;               |
+;;     >    (@).[O].
+;;            /  |  \
+;;           O   O   O
+;;          /|\ /|\ / \
+;;          ### ### # #
+;;
+;;               O
+;;               |
+;;             ..O..
+;;            /  |  \
+;;     > (@)[O]  O   O
+;;          /|\ /|\ / \
+;;          ### ### # #
+;;
+;;               O
+;;               |
+;;             ..O..
+;;            /  |  \
+;;     >    [O]  O   O
+;;         //|\ /|\ / \
+;;         @### ### # #
+;;
+;;
+;;               O
+;;               |
+;;             ..O..
+;;            /  |  \
+;;           O   O   O
+;;         //|\ /|\ / \
+;;     >  @##[U]### # #
+;;
+;;              O
+;;              |
+;;            ..O..
+;;           /  |  \
+;;          O   O   O
+;;         /|\ /|\ / \
+;;     >  [@#@]### # #
+;;
+;;              O
+;;              |
+;;            ..O..
+;;           /  |  \
+;;     >   [*]  O   O
+;;         /|\ /|\ / \
+;;         @#@ ### # #
+;;
+;;              O
+;;              |
+;;     >      .[*].
+;;           /  |  \
+;;          *   O   O
+;;         /|\ /|\ / \
+;;         @#@ ### # #
+;;
+;; Fast forward, skipping a subtree...
+;;
+;;              O
+;;              |
+;;            ..*..
+;;           /  |  \
+;;     >    *   O  [O]
+;;         /|\ /|\ / \
+;;         @#@ ### # #
+;;
+;; Insert nodes into right subtree, resulting in splitting multiple partitions.
+;;
+;;              O
+;;              |
+;;           ...*...
+;;          /   |   \
+;;         *    O    *
+;;        /|\  /|\ //|\\
+;;     >  @#@  ###[#@@@@]
+
+
 ;; ### Redistribute Children
 ;;
 ;; In the **distribution** phase, any candidate children which have over or

;; - `@` - persisted partition leaf
;; - `U` - underflowing partition leaf
;; - `x` - node which has had all children deleted

;; ### Divide Changes
;;
;; In the first **downward** phase, changes at the parent are grouped by the
;; child which links to the subtree containing the referenced keys.
;;
;;     >        .[O].         [????|?????]
;;             /     \
;;            /       \
;;           O        .O.
;;          / \      / | \
;;         O   O    O  O  O
;;        /|\  |\  / \/|\/ \
;;       # # # # # # ##### #
;;
;;              ..O..              |?????]
;;             /     \
;;            /       \
;;     >    [O]       .O.     [??|???]
;;          / \      / | \
;;         O   O    O  O  O
;;        /|\  |\  / \/|\/ \
;;       # # # # # # ##### #
;;
;;              ..O..              |?????]
;;             /     \
;;            /       \
;;           O        .O.        |???]
;;          / \      / | \
;;     >  [O]  O    O  O  O   [?|?]
;;        /|\  |\  / \/|\/ \
;;       # # # # # # ##### #
;;
;;              ..O..              |?????]
;;             /     \
;;            /       \
;;           O        .O.        |???]
;;          / \      / | \
;;         O   O    O  O  O     |?]
;;        /|\  |\  / \/|\/ \
;;     >[#]# # # # # ##### #  [?]

,,,


;; ### Apply Changes

;; be at least half full.
;;
;; The root node may be:
;;
;; - nil, indicating an empty tree.
;; - A partition, indicating that the tree has only a single node and fewer
;;   than `::partition/limit` records.
;; - An index, which is treated as the root node of the tree.
;;
;; The batch-update algorithm has the following goals:
;;
;; - **Log scaling:** visit `O(log_b(n))` nodes for `n` nodes updated.
;; - **Minimize garbage:** avoid storing nodes which are not part of the final
;;   tree.
;; - **Deduplication:** reuse existing stored nodes where possible.
;;
;; In the following diagrams, these symbols are used to represent a tree with
;; branching-factor of 4:
;;
;; - `O` - unchanged index node
;; - `*` - candidate index node
;; - `+` - persisted index node
