As far as I can tell this fixes the issue.

There are some downsides. DAGManager is much more complex, performing a fair amount fo work just before building the dependency tree. The DAGManager is also aware of the entire dependency tree of the application, not just classes with WarmUp and their dependencies. This means that cyclic dependencies are far more likely to be detected.