Generating Accurate and Compact Edit Scripts using Tree Differencing