<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def add_resource_subscription(self, device_id, resource_path, fix_path=True, queue_size=5):
 """Subscribe to resource updates. When called on a valid device and resource path a subscription is setup so that any update on the resource path value triggers a new element on the FIFO queue. The returned object is a native Python Queue object. :param device_id: Name of device to subscribe on (Required) :param resource_path: The resource path on device to observe (Required) :param fix_path: Removes leading / on resource_path if found :param queue_size: Sets the Queue size. If set to 0, no queue object will be created :returns: a queue of resource updates :rtype: Queue """

        # When path starts with / we remove the slash, as the API can't handle //.
        # Keep the original path around however, as we use that for queue registration.
        fixed_path = resource_path
        if fix_path and resource_path.startswith("/"):
            fixed_path = resource_path[1:]

        # Create the queue and register it with the dict holding all queues
        q = queue.Queue(queue_size) if queue_size > 0 else None

        # FIXME: explicit behaviour on replacing an existing queue
        self._queues[device_id][resource_path] = q

        # Send subscription request
        self._add_subscription(device_id, fixed_path)

        # Return the Queue object to the user
        return q