About that, I had a few questions about how to best handle initializers. I know there's a place where you need both the delta index and the hunk index (or something like that, I think it's one of the `enumerate` methods) so I needed to pass that index in the various initializers. So I'm wondering if either those initializers should be made private (since there's virtually no point for users of the library to create them directly — they'll always start from a `GTDiff` object), or if `libgit2` should add the actual index to the various structs.

That minor behavior changes gave me a hard time because the tests caught it ;-). I had to Read The Source™ to understand that if you never ask for the patch, the detection code never runs. As you point out in your next comment, I actually make sure that the patch gets created if you ever ask for that, but now I'm thinking that maybe this point should appear in the documentation of `binary`.