> This class has no clearly defined responsibilities. Which is an indication that it is doing way too much.

Well the original AutoloaderGenerator did _everything_ in one class, so it is really hard to be worse than that :)
But I agree, it may still be too much. i can see a number of things that can be removed from this class and put elsewhere.

One argument to have at least some of this in one class is to allow a shared signature for all "aspects" (or better: "partial generators") and then just iterate over the partial generators.

The difference in dependencies for the generators is too arbitrary to justify separate signatures. Maybe their constructors can have separate signatures, but then the getSnippet() and dump() should have a shared signature defined in the interface.

Knowing that one partial dump() needs a project root dir whereas another needs a vendor dir does not really help to separate responsibilities, it is just too arbitrary.

> Most of the time when this class is constructed, it's in an incomplete state.

True. E.g. the usage of AutoloadGenerationTask in buildPackageMap() is very cheap and dirty.  Better might be to build the package map somewhere outside.
Although.. it feels so convenient!