TreeDiffItem: | { action: "create"; fractionalIndex: string; index: number; parent: TreeID | undefined; target: TreeID; } | { action: "delete"; oldIndex: number; oldParent: TreeID | undefined; target: TreeID; } | { action: "move"; fractionalIndex: string; index: number; oldIndex: number; oldParent: TreeID | undefined; parent: TreeID | undefined; target: TreeID; }