I see, thanks. Maybe the extractor should be simpler: right now it returns the version *if it's incompatible*, and the notion of incompatibility is defined by the project, so it returns a lambda. 

I think a simpler tactic would be to make this extractor return the cross-compiled version of a filename, and leave the specific logic to its clients.

What do you think?