@classmethod
def forProtocol(cls, protocol, *args, **kwargs):
    """
        Create a factory for the given protocol.

        It sets the C{protocol} attribute and returns the constructed factory
        instance.

        @param protocol: A L{Protocol} subclass

        @param args: Positional arguments for the factory.

        @param kwargs: Keyword arguments for the factory.

        @return: A L{Factory} instance wired up to C{protocol}.
        """
    factory = cls(*args, **kwargs)
    factory.protocol = protocol
    return factory
