Juanlu, I would appreciate feedback about your insights. Do you think that code is more human-readable now? 

I have found the code (the library and the tests) very hard to understand. But I don’t know whether I can improve the code to make it more simple to read or, simply, I don’t know the problem domain.

Anyway the code looks fantastic. No duplicate code, great!! An amazing code coverage, great!! Congratulations.