>>I think there may exist some way to refactor this further, but I'm not sure how to do it

>something like table driven in [CommitFilter](https://github.com/libgit2/libgit2sharp/blob/vNext/LibGit2Sharp/CommitFilter.cs#L75-L81) ?

I was indeed thinking about some `Dictionary<Type, Func>` based something, but I'm afraid this would also require a specific `IComparer` to allow comparison of derived/mocked types...