def construct_for(self, service_name):
        """
        Builds a new, specialized ``Connection`` subclass for a given service.

        This will introspect a service, determine all the API calls it has &
        constructs a brand new class with those methods on it.

        :param service_name: The name of the service to construct a connection
            for. Ex. ``sqs``, ``sns``, ``dynamodb``, etc.
        :type service_name: string

        :returns: A new connection class for that service
        """
        # Construct a new ``ConnectionDetails`` (or similar class) for storing
        # the relevant details about the service & its operations.
        details = self.details_class(service_name, self.session)
        # Make sure the new class gets that ``ConnectionDetails`` instance as a
        # ``cls._details`` attribute.
        attrs = {
            '_details': details,
        }

        # Determine what we should call it.
        klass_name = self._build_class_name(service_name)

        # Construct what the class ought to have on it.
        attrs.update(self._build_methods(details))

        # Create the class.
        return type(
            klass_name,
            (self.base_connection,),
            attrs
        )
Builds a new, specialized ``Connection`` subclass for a given service.

        This will introspect a service, determine all the API calls it has &
        constructs a brand new class with those methods on it.

        :param service_name: The name of the service to construct a connection
            for. Ex. ``sqs``, ``sns``, ``dynamodb``, etc.
        :type service_name: string

        :returns: A new connection class for that service