@classmethod<EOL><INDENT>def implicit_static(cls, for_type=None, for_types=None):<DEDENT>
for type_ in cls.__get_type_args(for_type, for_types):<EOL><INDENT>implementations = {}<EOL>for function in cls.required():<EOL><INDENT>method = getattr(type_, function.__name__, None)<EOL>if not callable(method):<EOL><INDENT>raise TypeError(<EOL>"<STR_LIT>"<EOL>"<STR_LIT>"<EOL>% (cls.__name__, type_, function.__name__))<EOL><DEDENT>implementations[function] = method<EOL><DEDENT>for function in cls.optional():<EOL><INDENT>method = getattr(type_, function.__name__, None)<EOL>if callable(method):<EOL><INDENT>implementations[function] = method<EOL><DEDENT><DEDENT>return cls.implement(for_type=type_,<EOL>implementations=implementations)<EOL><DEDENT>
Automatically generate implementations for a type.

        Implement the protocol for the 'for_type' type by dispatching each
        member function of the protocol to an instance method of the same name
        declared on the type 'for_type'.

        Arguments:
            for_type: The type to implictly implement the protocol with.

        Raises:
            TypeError if not all implementations are provided by 'for_type'.