@classmethod<EOL><INDENT>def implemented(cls, for_type):<DEDENT>
for function in cls.required():<EOL><INDENT>if not function.implemented_for_type(for_type):<EOL><INDENT>raise TypeError(<EOL>"<STR_LIT>"<EOL>"<STR_LIT>" %<EOL>(for_type, function.func.__name__, cls))<EOL><DEDENT><DEDENT>cls.register(for_type)<EOL>
Assert that protocol 'cls' is implemented for type 'for_type'.

        This will cause 'for_type' to be registered with the protocol 'cls'.
        Subsequently, protocol.isa(for_type, cls) will return True, as will
        isinstance, issubclass and others.

        Raises:
            TypeError if 'for_type' doesn't implement all required functions.