UPnP embedded devices discovery

I have developed the upnpcontrol binding a while ago. The binding discovery implements an UpnpDiscoveryParticipant and correctly finds UPnP mediaservers and mediarenderers in the network as long as these are defined as root UPnP devices.

A user pointed out to me here that some devices hide these servers and renderers as embedded devices inside a higher level device. Discovery does not find these, or would only be able to return one and not multiple subdevices. The UpnpDiscoveryParticipant could recursively search for renderer or server subdevices, but the upnpDiscoveryParticipant only has a createResult method which returns a unique discovery result.

What would be the best practice be? I could create separate UpnpDiscoveryParticipants for servers and renderers which would at least allow to find a server and renderer as embedded devices in a root device. But it would still not allow finding multiple embedded servers or renderers. I could completely recreate (copy) the functionality for the UpnpDiscoveryService, which is duplication I don’t like. Are there other suggestions?