Use standard ExecutionException
Extract IDependencyCollectorBuilder interface, rename parametrization
Use arbitrary dependency type K instead of String or Class
use (hopefully) better terminology
add strategy for changing execution order