<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _draw_container_state_port(self, context, direction, color, transparency):
 """Draw the port of a container state Connector for container states are split in an inner connector and an outer connector. :param context: Cairo context :param direction: The direction the port is pointing to :param color: Desired color of the port :param float transparency: The level of transparency """

        c = context

        width, height = self.port_size
        c.set_line_width(self.port_side_size / constants.BORDER_WIDTH_OUTLINE_WIDTH_FACTOR *
                         self._port_image_cache.multiplicator)

        # Save/restore context, as we move and rotate the connector to the desired pose
        cur_point = c.get_current_point()
        c.save()
        c.rel_move_to(self.port_side_size / 2., self.port_side_size / 2.)
        PortView._rotate_context(c, direction)
        PortView._draw_inner_connector(c, width, height)
        c.restore()

        if self.connected_incoming:
            c.set_source_rgba(*gap_draw_helper.get_col_rgba(color, transparency))
        else:
            c.set_source_rgb(*gui_config.gtk_colors['PORT_UNCONNECTED'].to_floats())
        c.fill_preserve()
        c.set_source_rgba(*gap_draw_helper.get_col_rgba(color, transparency))
        c.stroke()

        c.move_to(*cur_point)
        c.save()
        c.rel_move_to(self.port_side_size / 2., self.port_side_size / 2.)
        PortView._rotate_context(c, direction)
        PortView._draw_outer_connector(c, width, height)
        c.restore()

        if self.connected_outgoing:
            c.set_source_rgba(*gap_draw_helper.get_col_rgba(color, transparency))
        else:
            c.set_source_rgb(*gui_config.gtk_colors['PORT_UNCONNECTED'].to_floats())
        c.fill_preserve()
        c.set_source_rgba(*gap_draw_helper.get_col_rgba(color, transparency))
        c.stroke()