Designing a Tree Diff Algorithm Using Dynamic Programming and A* – Tristan Hume