'Accept a list or dict of ``properties`` generated from
:meth:`.make_property` and apply them to a ``target`` object.'

@classmethod
def apply_properties(cls, target, properties):

    attrs = dict(properties)
    if attrs:
        parent = target.__class__
        attrs.setdefault('__module__', parent.__module__)
        newcls = type(parent.__name__, (parent, object), attrs)
        for name in ('__implemented__', '__provides__'):
            val = getattr(parent, name, _marker)
            if (val is not _marker):
                setattr(newcls, name, val)
        target.__class__ = newcls
