This does not verify that only the client name is only used once (same for policies), I think.
I think we should verify and raise on duplication.
Using the ZCML `_context.action` helper lets us make exceptions which show the conflicting ZCML (Conflicting configuration exceptions).

Take a look at how it is done in the `utility` discriminator: https://github.com/zopefoundation/zope.component/blob/master/src/zope/component/zcml.py#L386
Maybe you need to take a look at how it works, maybe in the interface..