                 midRemovedCount += 1
             }
 
-            let midChild: AnyVTree<Msg>?
-            if midCursor < midCount {
-                midChild = midChildren[midCursor]
-            }
-            else {
-                midChild = nil
-            }
+            let midChild = midChildren[safe: midCursor] ?? nil
+            let newChild = newChildren[newCursor]
 
             switch (midChild?.key, newChild.key) {
 

        var midRemovedCount = 0 // offset adjustment for reorder-index calculation

        while newCursor < newCount {
            let newChild = newChildren[newCursor]

            // Append `Remove` while `midChild` is nil.
            while midCursor < midCount && midChildren[midCursor] == nil {
                removes.append(Reorder.Remove(key: nil, from: midCursor - midRemovedCount))

                        removes.append(Reorder.Remove(key: midKey, from: midCursor - midRemovedCount))
                        midCursor += 1
                        midRemovedCount += 1
                    }

                // If "same key" or "neither has key"...
