Define behaviour for multiple assemblies with the same name - aggregate them into 1. Bailing out entirely is a little overkill.
Warn about duplicate assembly references - some of the time it will be intentional and we'll unify them erroneously (sometimes it'll just be a broken project)
Remove redundant argument
Refactor to reduce indentation
Refactor initialization code to simplify and enable more efficiency
Use hashset lookup to simplify code (and save time)
R# renames
Start count at 1
Extract constants to prevent typos
Failing test: Test that non-exhaustive search is non-exhaustive
Green: Remove hack - the performance hit of checking each list is probably worth it for the early escape!
Remove this line as it causes remote package sources to timeout while trying to order packages (they already seem to get returned in order of id - not that it matters for the algorithm used or is this class's responsibility)