title: Is there a Diff library for java that supports Annotate/Blame?
body: <p>I'm digging through Google's results for free (open source) Java diff libaries, and there seem quite a bunch of those (some of them even working with generic Objects and not only with Strings).</p>
  
  <p>Before I'm digging through tons of search results and not finding what I'm searching, I'll ask here first:</p>
  
  <p>Does any of those diff libraries support a feature like cvs annotate or svn blame. I want to</p>
  
  <ul>
  <li>pass the current <code>String[]</code> to a function</li>
  <li>continue passing older versions of the <code>String[]</code> to a function, until either I have used up all of them, or the library tells me that no original line was left unannotated (the last thing is not really a must but very useful since retrieving older versions of the <code>String[]</code> is expensive so I'd like to stop as early as possible)</li>
  <li>call a function which gives me an <code>ìnt[]</code> that tells me for every line of the current version, in which version it was last changed or whether it was not changed at all (i. e. last changed in the very first version).</li>
  </ul>
  
  <p>Having support for objects that are not <code>String</code>s is nice, but no must. And if the API is not exactly that way, I guess I could live with it.</p>
  
  <p>If there is none, can anybody suggest an extensible diff library where that feature can be added easily, preferrably one that would like to receive that feature as a contribution (and does not require tons of paperwork to be filled before they accept contributions, like the GNU project)? I'd volunteer to (at least try to) add it there, then.</p>