Consider changing: ``` foo(); bar(); ``` To: ``` if (true) { foo(); } ``` What we want: ``` + if (true) { foo(); - bar(); + } ``` A longest-common-subsequence algorithm is wrong here. The longest subsequence is five tokens: ``` ( ) ( ) ; ``` which leads to: ``` +if+ (+true+) +{+ +foo+(); -bar-(); +}+ ``` so we claim `foo` is added. We want the following *four* tokens to be preserved: ``` foo ( ) ; ``` Proposed solution: advance on both sides, keep first match.