<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_usb_device_source(self, backend, id_p, address, property_names, property_values):
 """Adds a new USB device source. in backend of type str The backend to use as the new device source. in id_p of type str Unique ID to identify the source. in address of type str Address to use, the format is dependent on the backend. For USB/IP backends for example the notation is host[:port]. in property_names of type str Array of property names for more detailed configuration. Not used at the moment. in property_values of type str Array of property values for more detailed configuration. Not used at the moment. """

        if not isinstance(backend, basestring):
            raise TypeError("backend can only be an instance of type basestring")
        if not isinstance(id_p, basestring):
            raise TypeError("id_p can only be an instance of type basestring")
        if not isinstance(address, basestring):
            raise TypeError("address can only be an instance of type basestring")
        if not isinstance(property_names, list):
            raise TypeError("property_names can only be an instance of type list")
        for a in property_names[:10]:
            if not isinstance(a, basestring):
                raise TypeError(
                        "array can only contain objects of type basestring")
        if not isinstance(property_values, list):
            raise TypeError("property_values can only be an instance of type list")
        for a in property_values[:10]:
            if not isinstance(a, basestring):
                raise TypeError(
                        "array can only contain objects of type basestring")
        self._call("addUSBDeviceSource",
                     in_p=[backend, id_p, address, property_names, property_values])