Context
The current implementation uses standalone classes for managing components and packages, but the two implementations share a bunch of code, see e.g. #602 or #607. We really should refactor the two classes to have a shared base class which implements the generic functions which are identical for both dependency types.
Look at ComponentTemplater, PackageTemplater and their base class Templater for inspiration.
Alternatives
Keep code base as it currently is, accepting that we duplicate some identical code between classes Component and Package.