Creates a new object path for a remote device. This
        method will connect to the remote device and retrieve
        all SDP records and then initiate the pairing.

        If a previously :py:meth:`create_device` was used
        successfully, this method will only initiate the pairing.

        Compared to :py:meth:`create_device` this method will
        fail if the pairing already exists, but not if the object
        path already has been created. This allows applications
        to use :py:meth:`create_device` first and then, if needed,
        use :py:meth:`create_paired_device` to initiate pairing.

        The agent object path is assumed to reside within the
        process (D-Bus connection instance) that calls this
        method. No separate registration procedure is needed
        for it and it gets automatically released once the
        pairing operation is complete.

        :param str dev_id: New device MAC address create
            e.g., '11:22:33:44:55:66'
        :param str agent_path: Path used when creating the
            bluetooth agent e.g., '/test/agent'
        :param str capability: Pairing agent capability
            e.g., 'DisplayYesNo', etc
        :param func cb_notify_device: Callback on success.  The
            callback is called with the new device's object
            path as an argument.
        :param func cb_notify_error: Callback on error.  The
            callback is called with the error reason.
        :return:
        :raises dbus.Exception: org.bluez.Error.InvalidArguments
        :raises dbus.Exception: org.bluez.Error.Failed

def create_paired_device(self, dev_id, agent_path,
                             capability, cb_notify_device, cb_notify_error):
        """
        Creates a new object path for a remote device. This
        method will connect to the remote device and retrieve
        all SDP records and then initiate the pairing.

        If a previously :py:meth:`create_device` was used
        successfully, this method will only initiate the pairing.

        Compared to :py:meth:`create_device` this method will
        fail if the pairing already exists, but not if the object
        path already has been created. This allows applications
        to use :py:meth:`create_device` first and then, if needed,
        use :py:meth:`create_paired_device` to initiate pairing.

        The agent object path is assumed to reside within the
        process (D-Bus connection instance) that calls this
        method. No separate registration procedure is needed
        for it and it gets automatically released once the
        pairing operation is complete.

        :param str dev_id: New device MAC address create
            e.g., '11:22:33:44:55:66'
        :param str agent_path: Path used when creating the
            bluetooth agent e.g., '/test/agent'
        :param str capability: Pairing agent capability
            e.g., 'DisplayYesNo', etc
        :param func cb_notify_device: Callback on success.  The
            callback is called with the new device's object
            path as an argument.
        :param func cb_notify_error: Callback on error.  The
            callback is called with the error reason.
        :return:
        :raises dbus.Exception: org.bluez.Error.InvalidArguments
        :raises dbus.Exception: org.bluez.Error.Failed
        """
        return self._interface.CreatePairedDevice(dev_id,
                                                  agent_path,
                                                  capability,
                                                  reply_handler=cb_notify_device,  # noqa
                                                  error_handler=cb_notify_error)