Find nodes that are obviously unchanged, so we can run the main diff on smaller inputs.
Count the nodes in
lhs that are unique to the LHS input, but are
also present in
Return true if both nodes are lists with same delimiters and have the same start and end children.
ChangeKind on nodes that have exactly the same structure
on both sides, and return a vec of pairs that need proper diffing.
Skip syntax nodes at the beginning or end that are obviously unchanged.
If we’re comparing two lists that have the same delimiters, mark the delimiters as unchanged and return the children.
Split out top-level lists that are largely the same.
Mark top-level nodes as unchanged if they have exactly the same content on both sides.