When two libraries have the same numeric tail we were not able to reliably determine which one was the newer.
Now we also check the libraries definitions and the symbols to make a more weighted decision.
The order of comparison is currently: compare version definitions > compare numeric tail > one has strictly more symbols
If even after these three checks we are still not sure which one to choose, we pick the provider as the default.
This is still a WIP. There are a few issue to resolve and do a general cleanup and testing. I decided to excluded all the symbols that started with an underscore. They should be just for internal use and it seems to be common for them to disappear/change from version to version.