docs: function diffOND(
    parent,
    children,
    oldChildren,
    newStart = 0,
    newEnd = children.length - 1,
    oldStart = 0,
    oldEnd = oldChildren.length - 1
  ) {
    var rows = newEnd - newStart + 1;
    var cols = oldEnd - oldStart + 1;
    var dmax = rows + cols;
  
    var v = [];
    var d, k, r, c, pv, cv, pd;
    outer: for (d = 0; d <= dmax; d++) {
      if (d > 50) return true;
      pd = d - 1;
      pv = d ? v[d - 1] : [0, 0];
      cv = v[d] = [];
      for (k = -d; k <= d; k += 2) {
        if (k === -d || (k !== d && pv[pd + k - 1] < pv[pd + k + 1])) {
          c = pv[pd + k + 1];
        } else {
          c = pv[pd + k - 1] + 1;
        }
        r = c - k;
        while (
          c < cols &&
          r < rows &&
          canPatch(oldChildren[oldStart + c], children[newStart + r])
        ) {
          c++;
          r++;
        }
        if (c === cols && r === rows) {
          break outer;
        }
        cv[d + k] = c;
      }
    }
  
    var diff = Array(d / 2 + dmax / 2);
    var deleteMap = {};
    var oldCh;
    var diffIdx = diff.length - 1;
    for (d = v.length - 1; d >= 0; d--) {
      while (
        c > 0 &&
        r > 0 &&
        canPatch(oldChildren[oldStart + c - 1], children[newStart + r - 1])
      ) {
        // diagonal edge = equality
        diff[diffIdx--] = PATCH;
        c--;
        r--;
      }
      if (!d) break;
      pd = d - 1;
      pv = d ? v[d - 1] : [0, 0];
      k = c - r;
      if (k === -d || (k !== d && pv[pd + k - 1] < pv[pd + k + 1])) {
        // vertical edge = insertion
        r--;
        diff[diffIdx--] = INSERTION;
      } else {
        // horizontal edge = deletion
        c--;
        diff[diffIdx--] = DELETION;
        oldCh = oldChildren[oldStart + c];
        if (oldCh.key != null) {
          deleteMap[oldCh.key] = oldStart + c;
        }
      }
    }
  
    applyDiff(parent, diff, children, oldChildren, newStart, oldStart, deleteMap);
  }