Jak wykonać łańcuch Diffs w Javie?

Muszę wykonać Diffs między ciągami Java. Chciałbym być w stanie przebudować ciąg używając oryginalnych ciągów i wersji diff. Czy ktoś zrobił to w Javie? Jakiej biblioteki używasz?

String a1; // This can be a long text
String a2; // ej. above text with spelling corrections
String a3; // ej. above text with spelling corrections and an additional sentence

Diff diff = new Diff();
String differences_a1_a2 = Diff.getDifferences(a,changed_a);
String differences_a2_a3 = Diff.getDifferences(a,changed_a);    
String[] diffs = new String[]{a,differences_a1_a2,differences_a2_a3};
String new_a3 = Diff.build(diffs);
a3.equals(new_a3); // this is true

questionAnswers(7)

yourAnswerToTheQuestion