 ;; - `@` - persisted partition leaf
 ;; - `U` - underflowing partition leaf
 ;; - `x` - node which has had all children deleted
+;;
+;; Algorithm Phases:
+;;
+;; - divide changes (downward)
+;; - apply changes (to partition leaves)
+;; - carry orphans (upward/sideways)
+;; - redistribute children
+;; - serialize the tree
+
 
 ;; ### 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]  O    O  O  O   [?|?]
 ;;        /|\  |\  / \/|\/ \
-;;       # # # # # # ##### #
-;;
-;;              ..O..              |?????]
-;;             /     \
+;;        ###  ##  # ##### #
+;;
+;;             ...O...             |?????]
 ;;            /       \
 ;;           O        .O.        |???]
 ;;          / \      / | \
 ;;         O   O    O  O  O     |?]
 ;;        /|\  |\  / \/|\/ \
-;;     >[#]# # # # # ##### #  [?]
-
-,,,
+;;     >[#]##  ##  # ##### #  [?]
 
 
 ;; ### Apply Changes

;;             |\  /|\/|\/ \
;;             # # ####### #
;;
;;              ..O..
;;             /     \
;;            /       \
;;     >    [O](U)    .O.
;;           |       / | \
;;           O      O  O  O
;;          / \    /|\/|\/ \
;;         #   #   ####### #
;;
;; When a subtree is being passed to the next branch, and the current node's
;; height is one more than the subtree root, insert it as a child of the
;; current node:
;;
;;              ..O..
;;             /     \
;;            /       \
;;           O        .O.
;;           |       / | \
;;     >    [*]     O  O  O
;;          /|\    /|\/|\/ \
;;        (U)# #   ####### #
;;
;;              ..O..
;;             /     \
;;            /       \
;;           O        .O.
;;           |       / | \

;; to the pool to redistribute. Use the link after if the run includes the
;; first child.
;;
;;               O
;;               |
;;           ....*....
;;          /   / \   \
;;     >   *   O  [*   *]
;;        /|\ /|\ / \ /|\
;;        @#@ ### # @ @@@
;;
;;               *
;;               |
;;     >     ...[*]...
;;          /   / \   \
;;         *   O   *   *
;;        /|\ /|\ / \ /|\
;;        @#@ ### # @ @@@
;;
;;     >        [*]
;;               |
;;           ....*....
;;          /   / \   \
;;         *   O   *   *
;;        /|\ /|\ / \ /|\
;;        @#@ ### # @ @@@


;; ### Serialize
;;
;; Now that we're back at the root, we can serialize out the resulting tree of
;; index nodes. One branch is reused entirely from the original tree, since it
;; hasn't been changed. All the partition leaves are serialized already at this
;; point.
;;
;;               *
;;               |
;;     >     ...[+]...
;;          /   / \   \
;;     >  [+]  O  [+] [+]
;;        /|\ /|\ / \ /|\
;;        @#@ ### # @ @@@
;;
;; If the upward recursion reaches a branch with a single child, we're on a path
;; up to the root, so return the subtree directly, decreasing the height of the
;; tree.
;;
;;     >        [*]
;;               |
;;           ....+....
;;          /   / \   \
;;         +   O   +   +
;;        /|\ /|\ / \ /|\
;;        @#@ ### # @ @@@
;;
;; Resulting balanced tree:
;;
;;           ....+....
;;          /   / \   \
;;         +   O   +   +
;;        /|\ /|\ / \ /|\
;;        @#@ ### # @ @@@


;; ### References
