def METHOD_NAME(self, size):
    """
    Removes first size elements from queue.
    Throws if requested removal size is larger than whole queue.
    """
    if size > self.size:
        raise EfficientCollectionQueue.SizeUnderflow(size, self.size)
    while size > 0:
        buffer = self.buffers[0]
        to_remove = min(size, len(buffer))
        buffer = buffer[to_remove:]
        if buffer:
            self.buffers[0] = buffer
        else:
            del self.buffers[0]
        size -= to_remove
        self.size -= to_remove