Understanding source code evolution using abstract syntax tree matching
Identifying the semantic and textual differences between two versions of a program