These days I think long and hard about dependencies, and ten times as long and hard about dependencies controlled by people inside my organization that I don't have the power to strangle.
Instead of doing this, the author should consider decomposing C even more. The former is logical cohesion, the latter is functional cohesion.
I've seen several examples in my own company's libraries where the authors have built frameworks. It almost always ends up in dependency hell.
At this point, I tend to try and shed dependencies whenever possible. I hate pulling in massive frameworks or worse, libraries that depend on massive frameworks. It almost always results in a brittle solution that causes maintenance nightmares in the future.
This doesn't mean I never use a framework, I just try to restrict it to the application level.
Design them in a way that the sub-components can be used stand-alone when needed. It may take time (experience) to tune such: your first attempt at a given component abstraction will probably be clunky.