I went ahead and started the work to port this to libgit2sharp, and [one of the overloads there](https://github.com/libgit2/libgit2sharp/blob/vNext/LibGit2Sharp/BranchCollectionExtensions.cs#L31) does the right thing, which makes sense, since it has all the info necessary to do so. This seems like a sensible pattern, so I think I'll just make a stronger recommendation in the doc-comments.