Description
Having them separated makes a lot of stuff complex, and duplicates a lot of code since both have very similar parameters (like the creating handler, the base and complete path etc..).
The system could consider the handler a kind of producer which is further resolvable to obtain yet another producer, until the resulting producer is not resolvable anymore.
So, the common interface could contain a single method "resolve", which will ultimately return a non resolvable producer, either the same producer that has been called or null if the request is not resolvable.