code: func (cln *Client) DiscoverDescriptors(ds []ble.UUID, c *ble.Characteristic) ([]*ble.Descriptor, error) {
  	rsp := cln.conn.sendReq(70, xpc.Dict{
  		"kCBMsgArgDeviceUUID":                cln.id,
  		"kCBMsgArgCharacteristicHandle":      c.Handle,
  		"kCBMsgArgCharacteristicValueHandle": c.ValueHandle,
  		"kCBMsgArgUUIDs":                     uuidSlice(ds),
  	})
  	for _, xds := range rsp.descriptors() {
  		xd := msg(xds.(xpc.Dict))
  		c.Descriptors = append(c.Descriptors, &ble.Descriptor{
  			UUID:   ble.MustParse(xd.uuid()),
  			Handle: uint16(xd.descriptorHandle()),
  		})
  	}
  	return c.Descriptors, nil
  }
docs: // DiscoverDescriptors finds all the descriptors within a characteristic. [Vol 3, Part G, 4.7.1]
  // If filter is specified, only filtered descriptors are returned.