Yes.  The diff implementation knows the hashes it needs.

Actually what I'm planning on doing is removing the hashes collection altogether from the RawText object and making the diff implementation cache it.  Then RawTextComparator's hash method stops looking inside of RawText.hashes and instead computes the hash on the fly.

For PatienceDiff this means we'll hash the lines after we've narrowed the file down by skipping common headers and footers, and then we'll keep those hash arrays throughout the execution of the diff.

For MyersDiff, I think its the same thing.  Only right now its probably not doing the common header/footer elimination.

Longer term, I might be changing PatienceDiff to actually construct the hashes table by assigning a unique int to each unique line.  Doing so by hashing both A and B into a single hashtable, and if its the first occurrence of that element, assign it a new unique value.  This way later on we can do compares during the recursive steps by just int equality and bypass the DiffComparator altogether.