In the example in #21 it wasn't clear what the ClientConnection should return from it's .produces so I tried initially with ClientConnection which led to a possibly infinite recursion in the first pass over the components adding a ConnectionManager. This probably wants to bail earlier if a Connection .provides the same class as itself.