The Swift Package Index logo.Swift Package Index

Build Information

Successful build of CoreBluetoothMock, reference main (f268f0), with Swift 6.1 for macOS (SPM) on 24 Oct 2026 19:43:55 UTC.

Swift 6 data race errors: 30

Build Command

env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures

Build Log

/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1487:21: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1485 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1486 |                 if let self = self, self.state == .connected {
1487 |                     characteristic.value = data
     |                     `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1488 |                     self.delegate?.peripheral(self,
1489 |                                               didUpdateValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 |     internal let identifier: UUID
238 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1495:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1493 |         case .failure(let error):
1494 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1495 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1496 |                     self.delegate?.peripheral(self,
1497 |                                               didUpdateValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1497:66: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1495 |                 if let self = self, self.state == .connected {
1496 |                     self.delegate?.peripheral(self,
1497 |                                               didUpdateValueFor: characteristic,
     |                                                                  `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1498 |                                               error: error)
1499 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 |     internal let identifier: UUID
238 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1522:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1520 |         case .success(let data):
1521 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1522 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1523 |                     descriptor.value = data
1524 |                     self.delegate?.peripheral(self,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1523:21: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1521 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1522 |                 if let self = self, self.state == .connected {
1523 |                     descriptor.value = data
     |                     `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1524 |                     self.delegate?.peripheral(self,
1525 |                                               didUpdateValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:378:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
376 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
377 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
378 | open class CBMDescriptor: CBMAttribute {
    |            `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
379 |     internal let identifier: UUID
380 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1531:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1529 |         case .failure(let error):
1530 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1531 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1532 |                     self.delegate?.peripheral(self,
1533 |                                               didUpdateValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1533:66: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1531 |                 if let self = self, self.state == .connected {
1532 |                     self.delegate?.peripheral(self,
1533 |                                               didUpdateValueFor: descriptor,
     |                                                                  `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1534 |                                               error: error)
1535 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:378:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
376 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
377 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
378 | open class CBMDescriptor: CBMAttribute {
    |            `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
379 |     internal let identifier: UUID
380 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1567:35: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1565 |                 let delay = interval * Double(packetsCount)
1566 |                 queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1567 |                     if let self = self, self.state == .connected {
     |                                   `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1568 |                         self.delegate?.peripheral(self,
1569 |                                                   didWriteValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1569:69: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1567 |                     if let self = self, self.state == .connected {
1568 |                         self.delegate?.peripheral(self,
1569 |                                                   didWriteValueFor: characteristic,
     |                                                                     `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1570 |                                                   error: nil)
1571 |                     }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 |     internal let identifier: UUID
238 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1575:35: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1573 |             case .failure(let error):
1574 |                 queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1575 |                     if let self = self, self.state == .connected {
     |                                   `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1576 |                         self.delegate?.peripheral(self,
1577 |                                                   didWriteValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1577:69: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1575 |                     if let self = self, self.state == .connected {
1576 |                         self.delegate?.peripheral(self,
1577 |                                                   didWriteValueFor: characteristic,
     |                                                                     `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1578 |                                                   error: error)
1579 |                     }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 |     internal let identifier: UUID
238 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1603:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1601 |
1602 |             queue.async { [weak self] in
1603 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1604 |                     // Increase buffer.
1605 |                     self.mutex.sync {
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1636:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1634 |         case .success:
1635 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1636 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1637 |                     self.delegate?.peripheral(self,
1638 |                                               didWriteValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1638:65: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1636 |                 if let self = self, self.state == .connected {
1637 |                     self.delegate?.peripheral(self,
1638 |                                               didWriteValueFor: descriptor,
     |                                                                 `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1639 |                                               error: nil)
1640 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:378:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
376 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
377 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
378 | open class CBMDescriptor: CBMAttribute {
    |            `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
379 |     internal let identifier: UUID
380 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1644:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1642 |         case .failure(let error):
1643 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1644 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1645 |                     self.delegate?.peripheral(self,
1646 |                                               didWriteValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1646:65: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1644 |                 if let self = self, self.state == .connected {
1645 |                     self.delegate?.peripheral(self,
1646 |                                               didWriteValueFor: descriptor,
     |                                                                 `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1647 |                                               error: error)
1648 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:378:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
376 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
377 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
378 | open class CBMDescriptor: CBMAttribute {
    |            `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
379 |     internal let identifier: UUID
380 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1691:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1689 |         case .success:
1690 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1691 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1692 |                     characteristic.isNotifying = enabled
1693 |                     self.delegate?.peripheral(self,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1692:21: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1690 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1691 |                 if let self = self, self.state == .connected {
1692 |                     characteristic.isNotifying = enabled
     |                     `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1693 |                     self.delegate?.peripheral(self,
1694 |                                               didUpdateNotificationStateFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 |     internal let identifier: UUID
238 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1696:21: warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1694 |                                               didUpdateNotificationStateFor: characteristic,
1695 |                                               error: nil)
1696 |                     mockCharacteristic.isNotifying = enabled
     |                     `- warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1697 |                     delegate.peripheral(self.mock,
1698 |                                         didUpdateNotificationStateFor: mockCharacteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:339:12: note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
337 |
338 | /// Mock implementation of ``CBMCharacteristic``.
339 | open class CBMCharacteristicMock: CBMCharacteristic {
    |            `- note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
340 |
341 |     open override var descriptors: [CBMDescriptor]? {
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1697:21: warning: capture of 'delegate' with non-sendable type 'any CBMPeripheralSpecDelegate' in a '@Sendable' closure
1695 |                                               error: nil)
1696 |                     mockCharacteristic.isNotifying = enabled
1697 |                     delegate.peripheral(self.mock,
     |                     `- warning: capture of 'delegate' with non-sendable type 'any CBMPeripheralSpecDelegate' in a '@Sendable' closure
1698 |                                         didUpdateNotificationStateFor: mockCharacteristic,
1699 |                                         error: nil)
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/PeripheralPeer/CBMPeripheralSpecDelegate.swift:34:17: note: protocol 'CBMPeripheralSpecDelegate' does not conform to the 'Sendable' protocol
 32 |
 33 | /// This delegate should implement the behavior of a real Bluetooth LE device during a connection.
 34 | public protocol CBMPeripheralSpecDelegate {
    |                 `- note: protocol 'CBMPeripheralSpecDelegate' does not conform to the 'Sendable' protocol
 35 |
 36 |     /// This method is called when the mock peripheral has been reset.
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1704:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1702 |         case .failure(let error):
1703 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1704 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1705 |                     self.delegate?.peripheral(self,
1706 |                                               didUpdateNotificationStateFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1706:78: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1704 |                 if let self = self, self.state == .connected {
1705 |                     self.delegate?.peripheral(self,
1706 |                                               didUpdateNotificationStateFor: characteristic,
     |                                                                              `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1707 |                                               error: error)
1708 |                     delegate.peripheral(self.mock,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 |     internal let identifier: UUID
238 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1708:21: warning: capture of 'delegate' with non-sendable type 'any CBMPeripheralSpecDelegate' in a '@Sendable' closure
1706 |                                               didUpdateNotificationStateFor: characteristic,
1707 |                                               error: error)
1708 |                     delegate.peripheral(self.mock,
     |                     `- warning: capture of 'delegate' with non-sendable type 'any CBMPeripheralSpecDelegate' in a '@Sendable' closure
1709 |                                         didUpdateNotificationStateFor: mockCharacteristic,
1710 |                                         error: error)
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/PeripheralPeer/CBMPeripheralSpecDelegate.swift:34:17: note: protocol 'CBMPeripheralSpecDelegate' does not conform to the 'Sendable' protocol
 32 |
 33 | /// This delegate should implement the behavior of a real Bluetooth LE device during a connection.
 34 | public protocol CBMPeripheralSpecDelegate {
    |                 `- note: protocol 'CBMPeripheralSpecDelegate' does not conform to the 'Sendable' protocol
 35 |
 36 |     /// This method is called when the mock peripheral has been reset.
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1709:72: warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1707 |                                               error: error)
1708 |                     delegate.peripheral(self.mock,
1709 |                                         didUpdateNotificationStateFor: mockCharacteristic,
     |                                                                        `- warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1710 |                                         error: error)
1711 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:339:12: note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
337 |
338 | /// Mock implementation of ``CBMCharacteristic``.
339 | open class CBMCharacteristicMock: CBMCharacteristic {
    |            `- note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
340 |
341 |     open override var descriptors: [CBMDescriptor]? {
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1722:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1720 |         guard manager.ensurePoweredOn() else { return }
1721 |         queue.async { [weak self] in
1722 |             if let self = self, self.state == .connected {
     |                           `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1723 |                 let rssi = self.mock.proximity.RSSI
1724 |                 let delta = CBMCentralManagerMock.rssiDeviation.value
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1742:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1740 |         NSLog("[CoreBluetoothMock] L2CAP channels are not implemented in the mock. Opening channel with PSM \(PSM) failed.")
1741 |         queue.async { [weak self] in
1742 |             if let self = self, self.state == .connected {
     |                           `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1743 |                 self.delegate?.peripheral(self, didOpen: nil, error: CBMError(.operationNotSupported))
1744 |             }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:160:45: warning: sending 'config' risks causing data races; this is an error in the Swift 6 language mode
 158 |             // The advertisement could have been stopped, or replaced, in the meantime.
 159 |             let isCurrent = mutex.sync { () -> Bool in
 160 |                 guard pendingAdvertisements[config] == token else {
     |                                             |- warning: sending 'config' risks causing data races; this is an error in the Swift 6 language mode
     |                                             `- note: task-isolated 'config' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 161 |                     return false
 162 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:176:32: warning: sending 'mock' risks causing data races; this is an error in the Swift 6 language mode
 174 |                     target: self,
 175 |                     selector: #selector(self.schedule(timer:)),
 176 |                     userInfo: (mock, config),
     |                                |- warning: sending 'mock' risks causing data races; this is an error in the Swift 6 language mode
     |                                `- note: task-isolated 'mock' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 177 |                     repeats: false)
 178 |             } else {
[29/33] Compiling CoreBluetoothMock CBMCentralManagerFactory.swift
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:41:24: warning: static property 'managers' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
  39 |
  40 |     /// A list of all mock managers instantiated by user.
  41 |     private static var managers: [WeakRef<CBMCentralManagerMock>] = []
     |                        |- warning: static property 'managers' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |                        |- note: convert 'managers' to a 'let' constant to make 'Sendable' shared state immutable
     |                        |- note: add '@MainActor' to make static property 'managers' part of global actor 'MainActor'
     |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
  42 |     /// A list of peripherals known to the system.
  43 |     private static var peripherals: [CBMPeripheralSpec] = [] {
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:43:24: warning: static property 'peripherals' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
  41 |     private static var managers: [WeakRef<CBMCentralManagerMock>] = []
  42 |     /// A list of peripherals known to the system.
  43 |     private static var peripherals: [CBMPeripheralSpec] = [] {
     |                        |- warning: static property 'peripherals' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |                        |- note: convert 'peripherals' to a 'let' constant to make 'Sendable' shared state immutable
     |                        |- note: add '@MainActor' to make static property 'peripherals' part of global actor 'MainActor'
     |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
  44 |         didSet {
  45 |             stopAdvertising()
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:52:24: warning: static property 'previewPeripherals' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
  50 |     ///
  51 |     /// Registered items can be accessed using any ``CBMCentralManagerMock``.
  52 |     private static var previewPeripherals: Set<CBMPeripheralPreview> = Set()
     |                        |- warning: static property 'previewPeripherals' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |                        |- note: convert 'previewPeripherals' to a 'let' constant to make 'Sendable' shared state immutable
     |                        |- note: add '@MainActor' to make static property 'previewPeripherals' part of global actor 'MainActor'
     |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
  53 |     /// A map of all current advertisements of all simulated peripherals.
  54 |     private static var advertisementTimers = CBMDictionary<CBMAdvertisementConfig, Timer>()
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:54:24: warning: static property 'advertisementTimers' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
  52 |     private static var previewPeripherals: Set<CBMPeripheralPreview> = Set()
  53 |     /// A map of all current advertisements of all simulated peripherals.
  54 |     private static var advertisementTimers = CBMDictionary<CBMAdvertisementConfig, Timer>()
     |                        |- warning: static property 'advertisementTimers' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |                        |- note: convert 'advertisementTimers' to a 'let' constant to make 'Sendable' shared state immutable
     |                        |- note: add '@MainActor' to make static property 'advertisementTimers' part of global actor 'MainActor'
     |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
  55 |     /// Advertisements that were started, but whose timers have not been created yet.
  56 |     ///
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:60:24: warning: static property 'pendingAdvertisements' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
  58 |     /// so that a timer that was queued earlier is not created after the advertisement
  59 |     /// has been stopped. Must be accessed on the ``mutex``.
  60 |     private static var pendingAdvertisements = CBMDictionary<CBMAdvertisementConfig, UUID>()
     |                        |- warning: static property 'pendingAdvertisements' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |                        |- note: convert 'pendingAdvertisements' to a 'let' constant to make 'Sendable' shared state immutable
     |                        |- note: add '@MainActor' to make static property 'pendingAdvertisements' part of global actor 'MainActor'
     |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
  61 |     /// A mutex queue for managing managers.
  62 |     private static let mutex: DispatchQueue = DispatchQueue(label: "Mutex")
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:66:38: warning: static property 'bluetoothAuthorization' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
  64 |     ///
  65 |     /// As `CBManagerAuthorization` was added in iOS 13, the raw value is kept.
  66 |     internal private(set) static var bluetoothAuthorization: Int? {
     |                                      |- warning: static property 'bluetoothAuthorization' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |                                      |- note: convert 'bluetoothAuthorization' to a 'let' constant to make 'Sendable' shared state immutable
     |                                      |- note: add '@MainActor' to make static property 'bluetoothAuthorization' part of global actor 'MainActor'
     |                                      `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
  67 |         didSet {
  68 |             notifyManagers()
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:78:38: warning: static property 'rssiDeviation' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
  76 |     ///
  77 |     /// Defaults to 15 dBm.
  78 |     internal private(set) static var rssiDeviation: CBMProximity.Deviation = .default
     |                                      |- warning: static property 'rssiDeviation' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |                                      |- note: convert 'rssiDeviation' to a 'let' constant to make 'Sendable' shared state immutable
     |                                      |- note: add '@MainActor' to make static property 'rssiDeviation' part of global actor 'MainActor'
     |                                      `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
  79 |
  80 |     /// The global state of the Bluetooth adapter on the device.
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:84:38: warning: static property 'managerState' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
  82 |     /// The state is shared between ``CBMCentralManagerMock`` and ``CBMPeripheralManagerMock``
  83 |     /// instances, as both use the same Bluetooth adapter.
  84 |     internal private(set) static var managerState: CBMManagerState = .poweredOff {
     |                                      |- warning: static property 'managerState' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |                                      |- note: convert 'managerState' to a 'let' constant to make 'Sendable' shared state immutable
     |                                      |- note: add '@MainActor' to make static property 'managerState' part of global actor 'MainActor'
     |                                      `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
  85 |         didSet {
  86 |             notifyManagers()
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:453:23: warning: static property 'simulateStateRestoration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 451 |     /// - SeeAlso: ``CBMCentralManagerRestoredStateScanServicesKey``
 452 |     /// - SeeAlso: ``CBMCentralManagerRestoredStateScanOptionsKey``
 453 |     public static var simulateStateRestoration: ((_ identifierKey: String) -> [String : Any]?)?
     |                       |- warning: static property 'simulateStateRestoration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |                       |- note: convert 'simulateStateRestoration' to a 'let' constant to make 'Sendable' shared state immutable
     |                       |- note: add '@MainActor' to make static property 'simulateStateRestoration' part of global actor 'MainActor'
     |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 454 |
 455 |     #if !os(macOS)
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:108:17: warning: capture of 'manager' with non-sendable type 'CBMCentralManagerMock' in a '@Sendable' closure
  35 | /// This implementation will interact only with mock peripherals created using
  36 | /// ``CBMPeripheralSpec/simulatePeripheral(identifier:proximity:)``.
  37 | open class CBMCentralManagerMock: CBMCentralManager {
     |            `- note: class 'CBMCentralManagerMock' does not conform to the 'Sendable' protocol
  38 |
  39 |
     :
 106 |             // ...and notify delegate.
 107 |             manager.queue.async {
 108 |                 manager.delegate?.centralManagerDidUpdateState(manager)
     |                 `- warning: capture of 'manager' with non-sendable type 'CBMCentralManagerMock' in a '@Sendable' closure
 109 |             }
 110 |         }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:387:27: warning: capture of 'self' with non-sendable type 'CBMCentralManagerMock?' in a '@Sendable' closure
  35 | /// This implementation will interact only with mock peripherals created using
  36 | /// ``CBMPeripheralSpec/simulatePeripheral(identifier:proximity:)``.
  37 | open class CBMCentralManagerMock: CBMCentralManager {
     |            `- note: class 'CBMCentralManagerMock' does not conform to the 'Sendable' protocol
  38 |
  39 |
     :
 385 |         }
 386 |         queue.async { [weak self] in
 387 |             if let self = self {
     |                           `- warning: capture of 'self' with non-sendable type 'CBMCentralManagerMock?' in a '@Sendable' closure
 388 |                 CBMCentralManagerMock.mutex.sync {
 389 |                     CBMCentralManagerMock.managers.append(WeakRef(self))
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1060:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1058 |         if isAlreadyConnected {
1059 |             queue.async { [weak self] in
1060 |                 if let self = self, self.state == .connecting {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1061 |                     self.state = .connected
1062 |                     self._canSendWriteWithoutResponse = true
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1065:21: warning: capture of 'completion' with non-sendable type '(Result<Void, any Error>) -> ()' in a '@Sendable' closure
1063 |                     self.mock.wasConnected = true
1064 |                     self.mock.virtualConnections += 1
1065 |                     completion(.success(()))
     |                     |- warning: capture of 'completion' with non-sendable type '(Result<Void, any Error>) -> ()' in a '@Sendable' closure
     |                     `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1066 |                 }
1067 |             }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1080:30: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1078 |         queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1079 |             // The connection could have been cancelled, or the request replaced, in the meantime.
1080 |             guard let self = self, self.pendingConnectionRequest == requestId else {
     |                              `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1081 |                 return
1082 |             }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1093:17: warning: capture of 'completion' with non-sendable type '(Result<Void, any Error>) -> ()' in a '@Sendable' closure
1091 |                     self.state = .disconnected
1092 |                 }
1093 |                 completion(result)
     |                 |- warning: capture of 'completion' with non-sendable type '(Result<Void, any Error>) -> ()' in a '@Sendable' closure
     |                 `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1094 |             }
1095 |         }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1108:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1106 |             state = .disconnecting
1107 |             queue.async { [weak self] in
1108 |                 if let self = self, self.state == .disconnecting {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1109 |                     self.state = .disconnected
1110 |                     completion()
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1110:21: warning: capture of 'completion' with non-sendable type '() -> ()' in a '@Sendable' closure
1108 |                 if let self = self, self.state == .disconnecting {
1109 |                     self.state = .disconnected
1110 |                     completion()
     |                     |- warning: capture of 'completion' with non-sendable type '() -> ()' in a '@Sendable' closure
     |                     `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1111 |                 }
1112 |             }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1126:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1124 |             // `tearDownSimulation()` could have been called before this is called.
1125 |             // See https://github.com/nordicsemi/IOS-CoreBluetooth-Mock/issues/25
1126 |             if let self = self, self.state == .disconnecting,
     |                           `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1127 |                CBMCentralManagerMock.managerState == .poweredOn {
1128 |                 self.state = .disconnected
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1138:17: warning: capture of 'completion' with non-sendable type '() -> ()' in a '@Sendable' closure
1136 |                                                              didDisconnect: nil)
1137 |                 }
1138 |                 completion()
     |                 |- warning: capture of 'completion' with non-sendable type '() -> ()' in a '@Sendable' closure
     |                 `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1139 |             }
1140 |         }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1158:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1156 |         }
1157 |         queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1158 |             if let self = self, CBMCentralManagerMock.managerState == .poweredOn {
     |                           `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1159 |                 if isReconnecting {
1160 |                     self.state = .connecting
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1166:17: warning: capture of 'completion' with non-sendable type '((any Error)?) -> ()' in a '@Sendable' closure
1164 |                 }
1165 |                 self._canSendWriteWithoutResponse = false
1166 |                 completion(error)
     |                 |- warning: capture of 'completion' with non-sendable type '((any Error)?) -> ()' in a '@Sendable' closure
     |                 `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1167 |             }
1168 |         }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1179:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1177 |         }
1178 |         queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1179 |             if let self = self, self.state == .connected {
     |                           `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1180 |                 self.delegate?.peripheralDidUpdateName(self)
1181 |             }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1202:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1200 |         let invalidatedServices = oldServices.filter { !services!.contains($0) }
1201 |         queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1202 |             if let self = self, self.state == .connected {
     |                           `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1203 |                 self.delegate?.peripheral(self, didModifyServices: invalidatedServices)
1204 |             }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1203:68: warning: capture of 'invalidatedServices' with non-sendable type '[CBMService]' in a '@Sendable' closure
1201 |         queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1202 |             if let self = self, self.state == .connected {
1203 |                 self.delegate?.peripheral(self, didModifyServices: invalidatedServices)
     |                                                                    `- warning: capture of 'invalidatedServices' with non-sendable type '[CBMService]' in a '@Sendable' closure
1204 |             }
1205 |         }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:53:12: note: class 'CBMService' does not conform to the 'Sendable' protocol
 51 | /// `CBMService` objects represent services of a remote peripheral. Services are either primary or secondary and
 52 | /// may contain multiple characteristics or included services (references to other services).
 53 | open class CBMService: CBMAttribute {
    |            `- note: class 'CBMService' does not conform to the 'Sendable' protocol
 54 |     internal let identifier: UUID
 55 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1225:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1223 |         let value = originalCharacteristic.value
1224 |         queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1225 |             if let self = self, self.state == .connected {
     |                           `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1226 |                 characteristic.value = value
1227 |                 self.delegate?.peripheral(self,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1226:17: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1224 |         queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1225 |             if let self = self, self.state == .connected {
1226 |                 characteristic.value = value
     |                 `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1227 |                 self.delegate?.peripheral(self,
1228 |                                           didUpdateValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 |     internal let identifier: UUID
238 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1271:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1269 |             let delay = interval * Double(newServices.count)
1270 |             queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1271 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1272 |                     // The services become available when discovery completes.
1273 |                     let known = self.services ?? []
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1274:33: warning: capture of 'newServices' with non-sendable type '[CBMService]' in a '@Sendable' closure
1272 |                     // The services become available when discovery completes.
1273 |                     let known = self.services ?? []
1274 |                     let added = newServices.filter { s in
     |                                 `- warning: capture of 'newServices' with non-sendable type '[CBMService]' in a '@Sendable' closure
1275 |                         !known.contains { $0.identifier == s.identifier }
1276 |                     }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:53:12: note: class 'CBMService' does not conform to the 'Sendable' protocol
 51 | /// `CBMService` objects represent services of a remote peripheral. Services are either primary or secondary and
 52 | /// may contain multiple characteristics or included services (references to other services).
 53 | open class CBMService: CBMAttribute {
    |            `- note: class 'CBMService' does not conform to the 'Sendable' protocol
 54 |     internal let identifier: UUID
 55 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1287:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1285 |         case .failure(let error):
1286 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1287 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1288 |                     self.delegate?.peripheral(self, didDiscoverServices: error)
1289 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1327:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1325 |             let delay = interval * Double(newServices.count)
1326 |             queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1327 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1328 |                     // The services become available when discovery completes.
1329 |                     let known = service._includedServices ?? []
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1329:33: warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1327 |                 if let self = self, self.state == .connected {
1328 |                     // The services become available when discovery completes.
1329 |                     let known = service._includedServices ?? []
     |                                 `- warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1330 |                     let added = newServices.filter { s in
1331 |                         !known.contains { $0.identifier == s.identifier }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:53:12: note: class 'CBMService' does not conform to the 'Sendable' protocol
 51 | /// `CBMService` objects represent services of a remote peripheral. Services are either primary or secondary and
 52 | /// may contain multiple characteristics or included services (references to other services).
 53 | open class CBMService: CBMAttribute {
    |            `- note: class 'CBMService' does not conform to the 'Sendable' protocol
 54 |     internal let identifier: UUID
 55 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1330:33: warning: capture of 'newServices' with non-sendable type '[CBMService]' in a '@Sendable' closure
1328 |                     // The services become available when discovery completes.
1329 |                     let known = service._includedServices ?? []
1330 |                     let added = newServices.filter { s in
     |                                 `- warning: capture of 'newServices' with non-sendable type '[CBMService]' in a '@Sendable' closure
1331 |                         !known.contains { $0.identifier == s.identifier }
1332 |                     }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:53:12: note: class 'CBMService' does not conform to the 'Sendable' protocol
 51 | /// `CBMService` objects represent services of a remote peripheral. Services are either primary or secondary and
 52 | /// may contain multiple characteristics or included services (references to other services).
 53 | open class CBMService: CBMAttribute {
    |            `- note: class 'CBMService' does not conform to the 'Sendable' protocol
 54 |     internal let identifier: UUID
 55 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1343:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1341 |         case .failure(let error):
1342 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1343 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1344 |                     self.delegate?.peripheral(self,
1345 |                                               didDiscoverIncludedServicesFor: service,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1345:79: warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1343 |                 if let self = self, self.state == .connected {
1344 |                     self.delegate?.peripheral(self,
1345 |                                               didDiscoverIncludedServicesFor: service,
     |                                                                               `- warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1346 |                                               error: error)
1347 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:53:12: note: class 'CBMService' does not conform to the 'Sendable' protocol
 51 | /// `CBMService` objects represent services of a remote peripheral. Services are either primary or secondary and
 52 | /// may contain multiple characteristics or included services (references to other services).
 53 | open class CBMService: CBMAttribute {
    |            `- note: class 'CBMService' does not conform to the 'Sendable' protocol
 54 |     internal let identifier: UUID
 55 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1386:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1384 |             let delay = interval * Double(newCharacteristics.count)
1385 |             queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1386 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1387 |                     // The characteristics become available when discovery completes.
1388 |                     let known = service._characteristics ?? []
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1388:33: warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1386 |                 if let self = self, self.state == .connected {
1387 |                     // The characteristics become available when discovery completes.
1388 |                     let known = service._characteristics ?? []
     |                                 `- warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1389 |                     let added = newCharacteristics.filter { c in
1390 |                         !known.contains { $0.identifier == c.identifier }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:53:12: note: class 'CBMService' does not conform to the 'Sendable' protocol
 51 | /// `CBMService` objects represent services of a remote peripheral. Services are either primary or secondary and
 52 | /// may contain multiple characteristics or included services (references to other services).
 53 | open class CBMService: CBMAttribute {
    |            `- note: class 'CBMService' does not conform to the 'Sendable' protocol
 54 |     internal let identifier: UUID
 55 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1389:33: warning: capture of 'newCharacteristics' with non-sendable type '[CBMCharacteristic]' in a '@Sendable' closure
1387 |                     // The characteristics become available when discovery completes.
1388 |                     let known = service._characteristics ?? []
1389 |                     let added = newCharacteristics.filter { c in
     |                                 `- warning: capture of 'newCharacteristics' with non-sendable type '[CBMCharacteristic]' in a '@Sendable' closure
1390 |                         !known.contains { $0.identifier == c.identifier }
1391 |                     }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 |     internal let identifier: UUID
238 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1402:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1400 |         case .failure(let error):
1401 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1402 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1403 |                     self.delegate?.peripheral(self,
1404 |                                               didDiscoverCharacteristicsFor: service,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1404:78: warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1402 |                 if let self = self, self.state == .connected {
1403 |                     self.delegate?.peripheral(self,
1404 |                                               didDiscoverCharacteristicsFor: service,
     |                                                                              `- warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1405 |                                               error: error)
1406 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:53:12: note: class 'CBMService' does not conform to the 'Sendable' protocol
 51 | /// `CBMService` objects represent services of a remote peripheral. Services are either primary or secondary and
 52 | /// may contain multiple characteristics or included services (references to other services).
 53 | open class CBMService: CBMAttribute {
    |            `- note: class 'CBMService' does not conform to the 'Sendable' protocol
 54 |     internal let identifier: UUID
 55 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1441:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1439 |             let delay = interval * Double(newDescriptors.count)
1440 |             queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1441 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1442 |                     // The descriptors become available when discovery completes.
1443 |                     let known = characteristic._descriptors ?? []
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1443:33: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1441 |                 if let self = self, self.state == .connected {
1442 |                     // The descriptors become available when discovery completes.
1443 |                     let known = characteristic._descriptors ?? []
     |                                 `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1444 |                     let added = newDescriptors.filter { d in
1445 |                         !known.contains { $0.identifier == d.identifier }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 |     internal let identifier: UUID
238 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1444:33: warning: capture of 'newDescriptors' with non-sendable type '[CBMDescriptor]' in a '@Sendable' closure
1442 |                     // The descriptors become available when discovery completes.
1443 |                     let known = characteristic._descriptors ?? []
1444 |                     let added = newDescriptors.filter { d in
     |                                 `- warning: capture of 'newDescriptors' with non-sendable type '[CBMDescriptor]' in a '@Sendable' closure
1445 |                         !known.contains { $0.identifier == d.identifier }
1446 |                     }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:378:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
376 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
377 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
378 | open class CBMDescriptor: CBMAttribute {
    |            `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
379 |     internal let identifier: UUID
380 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1457:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1455 |         case .failure(let error):
1456 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1457 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1458 |                     self.delegate?.peripheral(self,
1459 |                                               didDiscoverDescriptorsFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1459:74: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1457 |                 if let self = self, self.state == .connected {
1458 |                     self.delegate?.peripheral(self,
1459 |                                               didDiscoverDescriptorsFor: characteristic,
     |                                                                          `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1460 |                                               error: error)
1461 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 |     internal let identifier: UUID
238 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1486:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1484 |         case .success(let data):
1485 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1486 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1487 |                     characteristic.value = data
1488 |                     self.delegate?.peripheral(self,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1487:21: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1485 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1486 |                 if let self = self, self.state == .connected {
1487 |                     characteristic.value = data
     |                     `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1488 |                     self.delegate?.peripheral(self,
1489 |                                               didUpdateValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 |     internal let identifier: UUID
238 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1495:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1493 |         case .failure(let error):
1494 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1495 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1496 |                     self.delegate?.peripheral(self,
1497 |                                               didUpdateValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1497:66: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1495 |                 if let self = self, self.state == .connected {
1496 |                     self.delegate?.peripheral(self,
1497 |                                               didUpdateValueFor: characteristic,
     |                                                                  `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1498 |                                               error: error)
1499 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 |     internal let identifier: UUID
238 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1522:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1520 |         case .success(let data):
1521 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1522 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1523 |                     descriptor.value = data
1524 |                     self.delegate?.peripheral(self,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1523:21: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1521 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1522 |                 if let self = self, self.state == .connected {
1523 |                     descriptor.value = data
     |                     `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1524 |                     self.delegate?.peripheral(self,
1525 |                                               didUpdateValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:378:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
376 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
377 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
378 | open class CBMDescriptor: CBMAttribute {
    |            `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
379 |     internal let identifier: UUID
380 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1531:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1529 |         case .failure(let error):
1530 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1531 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1532 |                     self.delegate?.peripheral(self,
1533 |                                               didUpdateValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1533:66: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1531 |                 if let self = self, self.state == .connected {
1532 |                     self.delegate?.peripheral(self,
1533 |                                               didUpdateValueFor: descriptor,
     |                                                                  `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1534 |                                               error: error)
1535 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:378:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
376 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
377 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
378 | open class CBMDescriptor: CBMAttribute {
    |            `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
379 |     internal let identifier: UUID
380 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1567:35: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1565 |                 let delay = interval * Double(packetsCount)
1566 |                 queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1567 |                     if let self = self, self.state == .connected {
     |                                   `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1568 |                         self.delegate?.peripheral(self,
1569 |                                                   didWriteValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1569:69: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1567 |                     if let self = self, self.state == .connected {
1568 |                         self.delegate?.peripheral(self,
1569 |                                                   didWriteValueFor: characteristic,
     |                                                                     `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1570 |                                                   error: nil)
1571 |                     }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 |     internal let identifier: UUID
238 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1575:35: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1573 |             case .failure(let error):
1574 |                 queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1575 |                     if let self = self, self.state == .connected {
     |                                   `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1576 |                         self.delegate?.peripheral(self,
1577 |                                                   didWriteValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1577:69: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1575 |                     if let self = self, self.state == .connected {
1576 |                         self.delegate?.peripheral(self,
1577 |                                                   didWriteValueFor: characteristic,
     |                                                                     `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1578 |                                                   error: error)
1579 |                     }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 |     internal let identifier: UUID
238 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1603:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1601 |
1602 |             queue.async { [weak self] in
1603 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1604 |                     // Increase buffer.
1605 |                     self.mutex.sync {
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1636:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1634 |         case .success:
1635 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1636 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1637 |                     self.delegate?.peripheral(self,
1638 |                                               didWriteValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1638:65: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1636 |                 if let self = self, self.state == .connected {
1637 |                     self.delegate?.peripheral(self,
1638 |                                               didWriteValueFor: descriptor,
     |                                                                 `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1639 |                                               error: nil)
1640 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:378:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
376 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
377 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
378 | open class CBMDescriptor: CBMAttribute {
    |            `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
379 |     internal let identifier: UUID
380 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1644:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1642 |         case .failure(let error):
1643 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1644 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1645 |                     self.delegate?.peripheral(self,
1646 |                                               didWriteValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1646:65: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1644 |                 if let self = self, self.state == .connected {
1645 |                     self.delegate?.peripheral(self,
1646 |                                               didWriteValueFor: descriptor,
     |                                                                 `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1647 |                                               error: error)
1648 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:378:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
376 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
377 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
378 | open class CBMDescriptor: CBMAttribute {
    |            `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
379 |     internal let identifier: UUID
380 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1691:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1689 |         case .success:
1690 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1691 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1692 |                     characteristic.isNotifying = enabled
1693 |                     self.delegate?.peripheral(self,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1692:21: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1690 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1691 |                 if let self = self, self.state == .connected {
1692 |                     characteristic.isNotifying = enabled
     |                     `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1693 |                     self.delegate?.peripheral(self,
1694 |                                               didUpdateNotificationStateFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 |     internal let identifier: UUID
238 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1696:21: warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1694 |                                               didUpdateNotificationStateFor: characteristic,
1695 |                                               error: nil)
1696 |                     mockCharacteristic.isNotifying = enabled
     |                     `- warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1697 |                     delegate.peripheral(self.mock,
1698 |                                         didUpdateNotificationStateFor: mockCharacteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:339:12: note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
337 |
338 | /// Mock implementation of ``CBMCharacteristic``.
339 | open class CBMCharacteristicMock: CBMCharacteristic {
    |            `- note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
340 |
341 |     open override var descriptors: [CBMDescriptor]? {
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1697:21: warning: capture of 'delegate' with non-sendable type 'any CBMPeripheralSpecDelegate' in a '@Sendable' closure
1695 |                                               error: nil)
1696 |                     mockCharacteristic.isNotifying = enabled
1697 |                     delegate.peripheral(self.mock,
     |                     `- warning: capture of 'delegate' with non-sendable type 'any CBMPeripheralSpecDelegate' in a '@Sendable' closure
1698 |                                         didUpdateNotificationStateFor: mockCharacteristic,
1699 |                                         error: nil)
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/PeripheralPeer/CBMPeripheralSpecDelegate.swift:34:17: note: protocol 'CBMPeripheralSpecDelegate' does not conform to the 'Sendable' protocol
 32 |
 33 | /// This delegate should implement the behavior of a real Bluetooth LE device during a connection.
 34 | public protocol CBMPeripheralSpecDelegate {
    |                 `- note: protocol 'CBMPeripheralSpecDelegate' does not conform to the 'Sendable' protocol
 35 |
 36 |     /// This method is called when the mock peripheral has been reset.
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1704:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1702 |         case .failure(let error):
1703 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1704 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1705 |                     self.delegate?.peripheral(self,
1706 |                                               didUpdateNotificationStateFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1706:78: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1704 |                 if let self = self, self.state == .connected {
1705 |                     self.delegate?.peripheral(self,
1706 |                                               didUpdateNotificationStateFor: characteristic,
     |                                                                              `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1707 |                                               error: error)
1708 |                     delegate.peripheral(self.mock,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 |     internal let identifier: UUID
238 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1708:21: warning: capture of 'delegate' with non-sendable type 'any CBMPeripheralSpecDelegate' in a '@Sendable' closure
1706 |                                               didUpdateNotificationStateFor: characteristic,
1707 |                                               error: error)
1708 |                     delegate.peripheral(self.mock,
     |                     `- warning: capture of 'delegate' with non-sendable type 'any CBMPeripheralSpecDelegate' in a '@Sendable' closure
1709 |                                         didUpdateNotificationStateFor: mockCharacteristic,
1710 |                                         error: error)
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/PeripheralPeer/CBMPeripheralSpecDelegate.swift:34:17: note: protocol 'CBMPeripheralSpecDelegate' does not conform to the 'Sendable' protocol
 32 |
 33 | /// This delegate should implement the behavior of a real Bluetooth LE device during a connection.
 34 | public protocol CBMPeripheralSpecDelegate {
    |                 `- note: protocol 'CBMPeripheralSpecDelegate' does not conform to the 'Sendable' protocol
 35 |
 36 |     /// This method is called when the mock peripheral has been reset.
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1709:72: warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1707 |                                               error: error)
1708 |                     delegate.peripheral(self.mock,
1709 |                                         didUpdateNotificationStateFor: mockCharacteristic,
     |                                                                        `- warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1710 |                                         error: error)
1711 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:339:12: note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
337 |
338 | /// Mock implementation of ``CBMCharacteristic``.
339 | open class CBMCharacteristicMock: CBMCharacteristic {
    |            `- note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
340 |
341 |     open override var descriptors: [CBMDescriptor]? {
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1722:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1720 |         guard manager.ensurePoweredOn() else { return }
1721 |         queue.async { [weak self] in
1722 |             if let self = self, self.state == .connected {
     |                           `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1723 |                 let rssi = self.mock.proximity.RSSI
1724 |                 let delta = CBMCentralManagerMock.rssiDeviation.value
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1742:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1740 |         NSLog("[CoreBluetoothMock] L2CAP channels are not implemented in the mock. Opening channel with PSM \(PSM) failed.")
1741 |         queue.async { [weak self] in
1742 |             if let self = self, self.state == .connected {
     |                           `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1743 |                 self.delegate?.peripheral(self, didOpen: nil, error: CBMError(.operationNotSupported))
1744 |             }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:160:45: warning: sending 'config' risks causing data races; this is an error in the Swift 6 language mode
 158 |             // The advertisement could have been stopped, or replaced, in the meantime.
 159 |             let isCurrent = mutex.sync { () -> Bool in
 160 |                 guard pendingAdvertisements[config] == token else {
     |                                             |- warning: sending 'config' risks causing data races; this is an error in the Swift 6 language mode
     |                                             `- note: task-isolated 'config' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 161 |                     return false
 162 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:176:32: warning: sending 'mock' risks causing data races; this is an error in the Swift 6 language mode
 174 |                     target: self,
 175 |                     selector: #selector(self.schedule(timer:)),
 176 |                     userInfo: (mock, config),
     |                                |- warning: sending 'mock' risks causing data races; this is an error in the Swift 6 language mode
     |                                `- note: task-isolated 'mock' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 177 |                     repeats: false)
 178 |             } else {
[30/33] Compiling CoreBluetoothMock CBMCentralManagerMock.swift
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:41:24: warning: static property 'managers' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
  39 |
  40 |     /// A list of all mock managers instantiated by user.
  41 |     private static var managers: [WeakRef<CBMCentralManagerMock>] = []
     |                        |- warning: static property 'managers' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |                        |- note: convert 'managers' to a 'let' constant to make 'Sendable' shared state immutable
     |                        |- note: add '@MainActor' to make static property 'managers' part of global actor 'MainActor'
     |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
  42 |     /// A list of peripherals known to the system.
  43 |     private static var peripherals: [CBMPeripheralSpec] = [] {
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:43:24: warning: static property 'peripherals' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
  41 |     private static var managers: [WeakRef<CBMCentralManagerMock>] = []
  42 |     /// A list of peripherals known to the system.
  43 |     private static var peripherals: [CBMPeripheralSpec] = [] {
     |                        |- warning: static property 'peripherals' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |                        |- note: convert 'peripherals' to a 'let' constant to make 'Sendable' shared state immutable
     |                        |- note: add '@MainActor' to make static property 'peripherals' part of global actor 'MainActor'
     |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
  44 |         didSet {
  45 |             stopAdvertising()
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:52:24: warning: static property 'previewPeripherals' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
  50 |     ///
  51 |     /// Registered items can be accessed using any ``CBMCentralManagerMock``.
  52 |     private static var previewPeripherals: Set<CBMPeripheralPreview> = Set()
     |                        |- warning: static property 'previewPeripherals' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |                        |- note: convert 'previewPeripherals' to a 'let' constant to make 'Sendable' shared state immutable
     |                        |- note: add '@MainActor' to make static property 'previewPeripherals' part of global actor 'MainActor'
     |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
  53 |     /// A map of all current advertisements of all simulated peripherals.
  54 |     private static var advertisementTimers = CBMDictionary<CBMAdvertisementConfig, Timer>()
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:54:24: warning: static property 'advertisementTimers' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
  52 |     private static var previewPeripherals: Set<CBMPeripheralPreview> = Set()
  53 |     /// A map of all current advertisements of all simulated peripherals.
  54 |     private static var advertisementTimers = CBMDictionary<CBMAdvertisementConfig, Timer>()
     |                        |- warning: static property 'advertisementTimers' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |                        |- note: convert 'advertisementTimers' to a 'let' constant to make 'Sendable' shared state immutable
     |                        |- note: add '@MainActor' to make static property 'advertisementTimers' part of global actor 'MainActor'
     |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
  55 |     /// Advertisements that were started, but whose timers have not been created yet.
  56 |     ///
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:60:24: warning: static property 'pendingAdvertisements' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
  58 |     /// so that a timer that was queued earlier is not created after the advertisement
  59 |     /// has been stopped. Must be accessed on the ``mutex``.
  60 |     private static var pendingAdvertisements = CBMDictionary<CBMAdvertisementConfig, UUID>()
     |                        |- warning: static property 'pendingAdvertisements' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |                        |- note: convert 'pendingAdvertisements' to a 'let' constant to make 'Sendable' shared state immutable
     |                        |- note: add '@MainActor' to make static property 'pendingAdvertisements' part of global actor 'MainActor'
     |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
  61 |     /// A mutex queue for managing managers.
  62 |     private static let mutex: DispatchQueue = DispatchQueue(label: "Mutex")
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:66:38: warning: static property 'bluetoothAuthorization' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
  64 |     ///
  65 |     /// As `CBManagerAuthorization` was added in iOS 13, the raw value is kept.
  66 |     internal private(set) static var bluetoothAuthorization: Int? {
     |                                      |- warning: static property 'bluetoothAuthorization' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |                                      |- note: convert 'bluetoothAuthorization' to a 'let' constant to make 'Sendable' shared state immutable
     |                                      |- note: add '@MainActor' to make static property 'bluetoothAuthorization' part of global actor 'MainActor'
     |                                      `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
  67 |         didSet {
  68 |             notifyManagers()
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:78:38: warning: static property 'rssiDeviation' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
  76 |     ///
  77 |     /// Defaults to 15 dBm.
  78 |     internal private(set) static var rssiDeviation: CBMProximity.Deviation = .default
     |                                      |- warning: static property 'rssiDeviation' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |                                      |- note: convert 'rssiDeviation' to a 'let' constant to make 'Sendable' shared state immutable
     |                                      |- note: add '@MainActor' to make static property 'rssiDeviation' part of global actor 'MainActor'
     |                                      `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
  79 |
  80 |     /// The global state of the Bluetooth adapter on the device.
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:84:38: warning: static property 'managerState' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
  82 |     /// The state is shared between ``CBMCentralManagerMock`` and ``CBMPeripheralManagerMock``
  83 |     /// instances, as both use the same Bluetooth adapter.
  84 |     internal private(set) static var managerState: CBMManagerState = .poweredOff {
     |                                      |- warning: static property 'managerState' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |                                      |- note: convert 'managerState' to a 'let' constant to make 'Sendable' shared state immutable
     |                                      |- note: add '@MainActor' to make static property 'managerState' part of global actor 'MainActor'
     |                                      `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
  85 |         didSet {
  86 |             notifyManagers()
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:453:23: warning: static property 'simulateStateRestoration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 451 |     /// - SeeAlso: ``CBMCentralManagerRestoredStateScanServicesKey``
 452 |     /// - SeeAlso: ``CBMCentralManagerRestoredStateScanOptionsKey``
 453 |     public static var simulateStateRestoration: ((_ identifierKey: String) -> [String : Any]?)?
     |                       |- warning: static property 'simulateStateRestoration' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |                       |- note: convert 'simulateStateRestoration' to a 'let' constant to make 'Sendable' shared state immutable
     |                       |- note: add '@MainActor' to make static property 'simulateStateRestoration' part of global actor 'MainActor'
     |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 454 |
 455 |     #if !os(macOS)
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:108:17: warning: capture of 'manager' with non-sendable type 'CBMCentralManagerMock' in a '@Sendable' closure
  35 | /// This implementation will interact only with mock peripherals created using
  36 | /// ``CBMPeripheralSpec/simulatePeripheral(identifier:proximity:)``.
  37 | open class CBMCentralManagerMock: CBMCentralManager {
     |            `- note: class 'CBMCentralManagerMock' does not conform to the 'Sendable' protocol
  38 |
  39 |
     :
 106 |             // ...and notify delegate.
 107 |             manager.queue.async {
 108 |                 manager.delegate?.centralManagerDidUpdateState(manager)
     |                 `- warning: capture of 'manager' with non-sendable type 'CBMCentralManagerMock' in a '@Sendable' closure
 109 |             }
 110 |         }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:387:27: warning: capture of 'self' with non-sendable type 'CBMCentralManagerMock?' in a '@Sendable' closure
  35 | /// This implementation will interact only with mock peripherals created using
  36 | /// ``CBMPeripheralSpec/simulatePeripheral(identifier:proximity:)``.
  37 | open class CBMCentralManagerMock: CBMCentralManager {
     |            `- note: class 'CBMCentralManagerMock' does not conform to the 'Sendable' protocol
  38 |
  39 |
     :
 385 |         }
 386 |         queue.async { [weak self] in
 387 |             if let self = self {
     |                           `- warning: capture of 'self' with non-sendable type 'CBMCentralManagerMock?' in a '@Sendable' closure
 388 |                 CBMCentralManagerMock.mutex.sync {
 389 |                     CBMCentralManagerMock.managers.append(WeakRef(self))
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1060:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1058 |         if isAlreadyConnected {
1059 |             queue.async { [weak self] in
1060 |                 if let self = self, self.state == .connecting {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1061 |                     self.state = .connected
1062 |                     self._canSendWriteWithoutResponse = true
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1065:21: warning: capture of 'completion' with non-sendable type '(Result<Void, any Error>) -> ()' in a '@Sendable' closure
1063 |                     self.mock.wasConnected = true
1064 |                     self.mock.virtualConnections += 1
1065 |                     completion(.success(()))
     |                     |- warning: capture of 'completion' with non-sendable type '(Result<Void, any Error>) -> ()' in a '@Sendable' closure
     |                     `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1066 |                 }
1067 |             }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1080:30: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1078 |         queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1079 |             // The connection could have been cancelled, or the request replaced, in the meantime.
1080 |             guard let self = self, self.pendingConnectionRequest == requestId else {
     |                              `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1081 |                 return
1082 |             }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1093:17: warning: capture of 'completion' with non-sendable type '(Result<Void, any Error>) -> ()' in a '@Sendable' closure
1091 |                     self.state = .disconnected
1092 |                 }
1093 |                 completion(result)
     |                 |- warning: capture of 'completion' with non-sendable type '(Result<Void, any Error>) -> ()' in a '@Sendable' closure
     |                 `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1094 |             }
1095 |         }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1108:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1106 |             state = .disconnecting
1107 |             queue.async { [weak self] in
1108 |                 if let self = self, self.state == .disconnecting {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1109 |                     self.state = .disconnected
1110 |                     completion()
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1110:21: warning: capture of 'completion' with non-sendable type '() -> ()' in a '@Sendable' closure
1108 |                 if let self = self, self.state == .disconnecting {
1109 |                     self.state = .disconnected
1110 |                     completion()
     |                     |- warning: capture of 'completion' with non-sendable type '() -> ()' in a '@Sendable' closure
     |                     `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1111 |                 }
1112 |             }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1126:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1124 |             // `tearDownSimulation()` could have been called before this is called.
1125 |             // See https://github.com/nordicsemi/IOS-CoreBluetooth-Mock/issues/25
1126 |             if let self = self, self.state == .disconnecting,
     |                           `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1127 |                CBMCentralManagerMock.managerState == .poweredOn {
1128 |                 self.state = .disconnected
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1138:17: warning: capture of 'completion' with non-sendable type '() -> ()' in a '@Sendable' closure
1136 |                                                              didDisconnect: nil)
1137 |                 }
1138 |                 completion()
     |                 |- warning: capture of 'completion' with non-sendable type '() -> ()' in a '@Sendable' closure
     |                 `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1139 |             }
1140 |         }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1158:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1156 |         }
1157 |         queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1158 |             if let self = self, CBMCentralManagerMock.managerState == .poweredOn {
     |                           `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1159 |                 if isReconnecting {
1160 |                     self.state = .connecting
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1166:17: warning: capture of 'completion' with non-sendable type '((any Error)?) -> ()' in a '@Sendable' closure
1164 |                 }
1165 |                 self._canSendWriteWithoutResponse = false
1166 |                 completion(error)
     |                 |- warning: capture of 'completion' with non-sendable type '((any Error)?) -> ()' in a '@Sendable' closure
     |                 `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
1167 |             }
1168 |         }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1179:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1177 |         }
1178 |         queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1179 |             if let self = self, self.state == .connected {
     |                           `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1180 |                 self.delegate?.peripheralDidUpdateName(self)
1181 |             }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1202:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1200 |         let invalidatedServices = oldServices.filter { !services!.contains($0) }
1201 |         queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1202 |             if let self = self, self.state == .connected {
     |                           `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1203 |                 self.delegate?.peripheral(self, didModifyServices: invalidatedServices)
1204 |             }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1203:68: warning: capture of 'invalidatedServices' with non-sendable type '[CBMService]' in a '@Sendable' closure
1201 |         queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1202 |             if let self = self, self.state == .connected {
1203 |                 self.delegate?.peripheral(self, didModifyServices: invalidatedServices)
     |                                                                    `- warning: capture of 'invalidatedServices' with non-sendable type '[CBMService]' in a '@Sendable' closure
1204 |             }
1205 |         }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:53:12: note: class 'CBMService' does not conform to the 'Sendable' protocol
 51 | /// `CBMService` objects represent services of a remote peripheral. Services are either primary or secondary and
 52 | /// may contain multiple characteristics or included services (references to other services).
 53 | open class CBMService: CBMAttribute {
    |            `- note: class 'CBMService' does not conform to the 'Sendable' protocol
 54 |     internal let identifier: UUID
 55 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1225:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1223 |         let value = originalCharacteristic.value
1224 |         queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1225 |             if let self = self, self.state == .connected {
     |                           `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1226 |                 characteristic.value = value
1227 |                 self.delegate?.peripheral(self,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1226:17: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1224 |         queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1225 |             if let self = self, self.state == .connected {
1226 |                 characteristic.value = value
     |                 `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1227 |                 self.delegate?.peripheral(self,
1228 |                                           didUpdateValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 |     internal let identifier: UUID
238 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1271:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1269 |             let delay = interval * Double(newServices.count)
1270 |             queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1271 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1272 |                     // The services become available when discovery completes.
1273 |                     let known = self.services ?? []
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1274:33: warning: capture of 'newServices' with non-sendable type '[CBMService]' in a '@Sendable' closure
1272 |                     // The services become available when discovery completes.
1273 |                     let known = self.services ?? []
1274 |                     let added = newServices.filter { s in
     |                                 `- warning: capture of 'newServices' with non-sendable type '[CBMService]' in a '@Sendable' closure
1275 |                         !known.contains { $0.identifier == s.identifier }
1276 |                     }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:53:12: note: class 'CBMService' does not conform to the 'Sendable' protocol
 51 | /// `CBMService` objects represent services of a remote peripheral. Services are either primary or secondary and
 52 | /// may contain multiple characteristics or included services (references to other services).
 53 | open class CBMService: CBMAttribute {
    |            `- note: class 'CBMService' does not conform to the 'Sendable' protocol
 54 |     internal let identifier: UUID
 55 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1287:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1285 |         case .failure(let error):
1286 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1287 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1288 |                     self.delegate?.peripheral(self, didDiscoverServices: error)
1289 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1327:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1325 |             let delay = interval * Double(newServices.count)
1326 |             queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1327 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1328 |                     // The services become available when discovery completes.
1329 |                     let known = service._includedServices ?? []
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1329:33: warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1327 |                 if let self = self, self.state == .connected {
1328 |                     // The services become available when discovery completes.
1329 |                     let known = service._includedServices ?? []
     |                                 `- warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1330 |                     let added = newServices.filter { s in
1331 |                         !known.contains { $0.identifier == s.identifier }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:53:12: note: class 'CBMService' does not conform to the 'Sendable' protocol
 51 | /// `CBMService` objects represent services of a remote peripheral. Services are either primary or secondary and
 52 | /// may contain multiple characteristics or included services (references to other services).
 53 | open class CBMService: CBMAttribute {
    |            `- note: class 'CBMService' does not conform to the 'Sendable' protocol
 54 |     internal let identifier: UUID
 55 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1330:33: warning: capture of 'newServices' with non-sendable type '[CBMService]' in a '@Sendable' closure
1328 |                     // The services become available when discovery completes.
1329 |                     let known = service._includedServices ?? []
1330 |                     let added = newServices.filter { s in
     |                                 `- warning: capture of 'newServices' with non-sendable type '[CBMService]' in a '@Sendable' closure
1331 |                         !known.contains { $0.identifier == s.identifier }
1332 |                     }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:53:12: note: class 'CBMService' does not conform to the 'Sendable' protocol
 51 | /// `CBMService` objects represent services of a remote peripheral. Services are either primary or secondary and
 52 | /// may contain multiple characteristics or included services (references to other services).
 53 | open class CBMService: CBMAttribute {
    |            `- note: class 'CBMService' does not conform to the 'Sendable' protocol
 54 |     internal let identifier: UUID
 55 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1343:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1341 |         case .failure(let error):
1342 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1343 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1344 |                     self.delegate?.peripheral(self,
1345 |                                               didDiscoverIncludedServicesFor: service,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1345:79: warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1343 |                 if let self = self, self.state == .connected {
1344 |                     self.delegate?.peripheral(self,
1345 |                                               didDiscoverIncludedServicesFor: service,
     |                                                                               `- warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1346 |                                               error: error)
1347 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:53:12: note: class 'CBMService' does not conform to the 'Sendable' protocol
 51 | /// `CBMService` objects represent services of a remote peripheral. Services are either primary or secondary and
 52 | /// may contain multiple characteristics or included services (references to other services).
 53 | open class CBMService: CBMAttribute {
    |            `- note: class 'CBMService' does not conform to the 'Sendable' protocol
 54 |     internal let identifier: UUID
 55 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1386:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1384 |             let delay = interval * Double(newCharacteristics.count)
1385 |             queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1386 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1387 |                     // The characteristics become available when discovery completes.
1388 |                     let known = service._characteristics ?? []
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1388:33: warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1386 |                 if let self = self, self.state == .connected {
1387 |                     // The characteristics become available when discovery completes.
1388 |                     let known = service._characteristics ?? []
     |                                 `- warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1389 |                     let added = newCharacteristics.filter { c in
1390 |                         !known.contains { $0.identifier == c.identifier }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:53:12: note: class 'CBMService' does not conform to the 'Sendable' protocol
 51 | /// `CBMService` objects represent services of a remote peripheral. Services are either primary or secondary and
 52 | /// may contain multiple characteristics or included services (references to other services).
 53 | open class CBMService: CBMAttribute {
    |            `- note: class 'CBMService' does not conform to the 'Sendable' protocol
 54 |     internal let identifier: UUID
 55 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1389:33: warning: capture of 'newCharacteristics' with non-sendable type '[CBMCharacteristic]' in a '@Sendable' closure
1387 |                     // The characteristics become available when discovery completes.
1388 |                     let known = service._characteristics ?? []
1389 |                     let added = newCharacteristics.filter { c in
     |                                 `- warning: capture of 'newCharacteristics' with non-sendable type '[CBMCharacteristic]' in a '@Sendable' closure
1390 |                         !known.contains { $0.identifier == c.identifier }
1391 |                     }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 |     internal let identifier: UUID
238 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1402:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1400 |         case .failure(let error):
1401 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1402 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1403 |                     self.delegate?.peripheral(self,
1404 |                                               didDiscoverCharacteristicsFor: service,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1404:78: warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1402 |                 if let self = self, self.state == .connected {
1403 |                     self.delegate?.peripheral(self,
1404 |                                               didDiscoverCharacteristicsFor: service,
     |                                                                              `- warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1405 |                                               error: error)
1406 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:53:12: note: class 'CBMService' does not conform to the 'Sendable' protocol
 51 | /// `CBMService` objects represent services of a remote peripheral. Services are either primary or secondary and
 52 | /// may contain multiple characteristics or included services (references to other services).
 53 | open class CBMService: CBMAttribute {
    |            `- note: class 'CBMService' does not conform to the 'Sendable' protocol
 54 |     internal let identifier: UUID
 55 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1441:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1439 |             let delay = interval * Double(newDescriptors.count)
1440 |             queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1441 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1442 |                     // The descriptors become available when discovery completes.
1443 |                     let known = characteristic._descriptors ?? []
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1443:33: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1441 |                 if let self = self, self.state == .connected {
1442 |                     // The descriptors become available when discovery completes.
1443 |                     let known = characteristic._descriptors ?? []
     |                                 `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1444 |                     let added = newDescriptors.filter { d in
1445 |                         !known.contains { $0.identifier == d.identifier }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 |     internal let identifier: UUID
238 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1444:33: warning: capture of 'newDescriptors' with non-sendable type '[CBMDescriptor]' in a '@Sendable' closure
1442 |                     // The descriptors become available when discovery completes.
1443 |                     let known = characteristic._descriptors ?? []
1444 |                     let added = newDescriptors.filter { d in
     |                                 `- warning: capture of 'newDescriptors' with non-sendable type '[CBMDescriptor]' in a '@Sendable' closure
1445 |                         !known.contains { $0.identifier == d.identifier }
1446 |                     }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:378:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
376 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
377 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
378 | open class CBMDescriptor: CBMAttribute {
    |            `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
379 |     internal let identifier: UUID
380 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1457:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1455 |         case .failure(let error):
1456 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1457 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1458 |                     self.delegate?.peripheral(self,
1459 |                                               didDiscoverDescriptorsFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1459:74: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1457 |                 if let self = self, self.state == .connected {
1458 |                     self.delegate?.peripheral(self,
1459 |                                               didDiscoverDescriptorsFor: characteristic,
     |                                                                          `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1460 |                                               error: error)
1461 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 |     internal let identifier: UUID
238 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1486:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1484 |         case .success(let data):
1485 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1486 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1487 |                     characteristic.value = data
1488 |                     self.delegate?.peripheral(self,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1487:21: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1485 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1486 |                 if let self = self, self.state == .connected {
1487 |                     characteristic.value = data
     |                     `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1488 |                     self.delegate?.peripheral(self,
1489 |                                               didUpdateValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 |     internal let identifier: UUID
238 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1495:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1493 |         case .failure(let error):
1494 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1495 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1496 |                     self.delegate?.peripheral(self,
1497 |                                               didUpdateValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1497:66: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1495 |                 if let self = self, self.state == .connected {
1496 |                     self.delegate?.peripheral(self,
1497 |                                               didUpdateValueFor: characteristic,
     |                                                                  `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1498 |                                               error: error)
1499 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 |     internal let identifier: UUID
238 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1522:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1520 |         case .success(let data):
1521 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1522 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1523 |                     descriptor.value = data
1524 |                     self.delegate?.peripheral(self,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1523:21: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1521 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1522 |                 if let self = self, self.state == .connected {
1523 |                     descriptor.value = data
     |                     `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1524 |                     self.delegate?.peripheral(self,
1525 |                                               didUpdateValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:378:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
376 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
377 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
378 | open class CBMDescriptor: CBMAttribute {
    |            `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
379 |     internal let identifier: UUID
380 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1531:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1529 |         case .failure(let error):
1530 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1531 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1532 |                     self.delegate?.peripheral(self,
1533 |                                               didUpdateValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1533:66: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1531 |                 if let self = self, self.state == .connected {
1532 |                     self.delegate?.peripheral(self,
1533 |                                               didUpdateValueFor: descriptor,
     |                                                                  `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1534 |                                               error: error)
1535 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:378:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
376 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
377 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
378 | open class CBMDescriptor: CBMAttribute {
    |            `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
379 |     internal let identifier: UUID
380 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1567:35: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1565 |                 let delay = interval * Double(packetsCount)
1566 |                 queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1567 |                     if let self = self, self.state == .connected {
     |                                   `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1568 |                         self.delegate?.peripheral(self,
1569 |                                                   didWriteValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1569:69: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1567 |                     if let self = self, self.state == .connected {
1568 |                         self.delegate?.peripheral(self,
1569 |                                                   didWriteValueFor: characteristic,
     |                                                                     `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1570 |                                                   error: nil)
1571 |                     }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 |     internal let identifier: UUID
238 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1575:35: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1573 |             case .failure(let error):
1574 |                 queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1575 |                     if let self = self, self.state == .connected {
     |                                   `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1576 |                         self.delegate?.peripheral(self,
1577 |                                                   didWriteValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1577:69: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1575 |                     if let self = self, self.state == .connected {
1576 |                         self.delegate?.peripheral(self,
1577 |                                                   didWriteValueFor: characteristic,
     |                                                                     `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1578 |                                                   error: error)
1579 |                     }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 |     internal let identifier: UUID
238 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1603:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1601 |
1602 |             queue.async { [weak self] in
1603 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1604 |                     // Increase buffer.
1605 |                     self.mutex.sync {
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1636:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1634 |         case .success:
1635 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1636 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1637 |                     self.delegate?.peripheral(self,
1638 |                                               didWriteValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1638:65: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1636 |                 if let self = self, self.state == .connected {
1637 |                     self.delegate?.peripheral(self,
1638 |                                               didWriteValueFor: descriptor,
     |                                                                 `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1639 |                                               error: nil)
1640 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:378:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
376 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
377 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
378 | open class CBMDescriptor: CBMAttribute {
    |            `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
379 |     internal let identifier: UUID
380 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1644:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1642 |         case .failure(let error):
1643 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1644 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1645 |                     self.delegate?.peripheral(self,
1646 |                                               didWriteValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1646:65: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1644 |                 if let self = self, self.state == .connected {
1645 |                     self.delegate?.peripheral(self,
1646 |                                               didWriteValueFor: descriptor,
     |                                                                 `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1647 |                                               error: error)
1648 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:378:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
376 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
377 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
378 | open class CBMDescriptor: CBMAttribute {
    |            `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
379 |     internal let identifier: UUID
380 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1691:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1689 |         case .success:
1690 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1691 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1692 |                     characteristic.isNotifying = enabled
1693 |                     self.delegate?.peripheral(self,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1692:21: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1690 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1691 |                 if let self = self, self.state == .connected {
1692 |                     characteristic.isNotifying = enabled
     |                     `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1693 |                     self.delegate?.peripheral(self,
1694 |                                               didUpdateNotificationStateFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 |     internal let identifier: UUID
238 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1696:21: warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1694 |                                               didUpdateNotificationStateFor: characteristic,
1695 |                                               error: nil)
1696 |                     mockCharacteristic.isNotifying = enabled
     |                     `- warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1697 |                     delegate.peripheral(self.mock,
1698 |                                         didUpdateNotificationStateFor: mockCharacteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:339:12: note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
337 |
338 | /// Mock implementation of ``CBMCharacteristic``.
339 | open class CBMCharacteristicMock: CBMCharacteristic {
    |            `- note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
340 |
341 |     open override var descriptors: [CBMDescriptor]? {
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1697:21: warning: capture of 'delegate' with non-sendable type 'any CBMPeripheralSpecDelegate' in a '@Sendable' closure
1695 |                                               error: nil)
1696 |                     mockCharacteristic.isNotifying = enabled
1697 |                     delegate.peripheral(self.mock,
     |                     `- warning: capture of 'delegate' with non-sendable type 'any CBMPeripheralSpecDelegate' in a '@Sendable' closure
1698 |                                         didUpdateNotificationStateFor: mockCharacteristic,
1699 |                                         error: nil)
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/PeripheralPeer/CBMPeripheralSpecDelegate.swift:34:17: note: protocol 'CBMPeripheralSpecDelegate' does not conform to the 'Sendable' protocol
 32 |
 33 | /// This delegate should implement the behavior of a real Bluetooth LE device during a connection.
 34 | public protocol CBMPeripheralSpecDelegate {
    |                 `- note: protocol 'CBMPeripheralSpecDelegate' does not conform to the 'Sendable' protocol
 35 |
 36 |     /// This method is called when the mock peripheral has been reset.
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1704:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1702 |         case .failure(let error):
1703 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1704 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1705 |                     self.delegate?.peripheral(self,
1706 |                                               didUpdateNotificationStateFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1706:78: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1704 |                 if let self = self, self.state == .connected {
1705 |                     self.delegate?.peripheral(self,
1706 |                                               didUpdateNotificationStateFor: characteristic,
     |                                                                              `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1707 |                                               error: error)
1708 |                     delegate.peripheral(self.mock,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:236:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
234 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
235 | /// and how you access the descriptors.
236 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
237 |     internal let identifier: UUID
238 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1708:21: warning: capture of 'delegate' with non-sendable type 'any CBMPeripheralSpecDelegate' in a '@Sendable' closure
1706 |                                               didUpdateNotificationStateFor: characteristic,
1707 |                                               error: error)
1708 |                     delegate.peripheral(self.mock,
     |                     `- warning: capture of 'delegate' with non-sendable type 'any CBMPeripheralSpecDelegate' in a '@Sendable' closure
1709 |                                         didUpdateNotificationStateFor: mockCharacteristic,
1710 |                                         error: error)
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/PeripheralPeer/CBMPeripheralSpecDelegate.swift:34:17: note: protocol 'CBMPeripheralSpecDelegate' does not conform to the 'Sendable' protocol
 32 |
 33 | /// This delegate should implement the behavior of a real Bluetooth LE device during a connection.
 34 | public protocol CBMPeripheralSpecDelegate {
    |                 `- note: protocol 'CBMPeripheralSpecDelegate' does not conform to the 'Sendable' protocol
 35 |
 36 |     /// This method is called when the mock peripheral has been reset.
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1709:72: warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1707 |                                               error: error)
1708 |                     delegate.peripheral(self.mock,
1709 |                                         didUpdateNotificationStateFor: mockCharacteristic,
     |                                                                        `- warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1710 |                                         error: error)
1711 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:339:12: note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
337 |
338 | /// Mock implementation of ``CBMCharacteristic``.
339 | open class CBMCharacteristicMock: CBMCharacteristic {
    |            `- note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
340 |
341 |     open override var descriptors: [CBMDescriptor]? {
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1722:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1720 |         guard manager.ensurePoweredOn() else { return }
1721 |         queue.async { [weak self] in
1722 |             if let self = self, self.state == .connected {
     |                           `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1723 |                 let rssi = self.mock.proximity.RSSI
1724 |                 let delta = CBMCentralManagerMock.rssiDeviation.value
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:1742:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 924 | ///
 925 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 926 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 927 |     /// The parent central manager.
 928 |     private let manager: CBMCentralManagerMock
     :
1740 |         NSLog("[CoreBluetoothMock] L2CAP channels are not implemented in the mock. Opening channel with PSM \(PSM) failed.")
1741 |         queue.async { [weak self] in
1742 |             if let self = self, self.state == .connected {
     |                           `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1743 |                 self.delegate?.peripheral(self, didOpen: nil, error: CBMError(.operationNotSupported))
1744 |             }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:160:45: warning: sending 'config' risks causing data races; this is an error in the Swift 6 language mode
 158 |             // The advertisement could have been stopped, or replaced, in the meantime.
 159 |             let isCurrent = mutex.sync { () -> Bool in
 160 |                 guard pendingAdvertisements[config] == token else {
     |                                             |- warning: sending 'config' risks causing data races; this is an error in the Swift 6 language mode
     |                                             `- note: task-isolated 'config' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 161 |                     return false
 162 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/Central/CBMCentralManagerMock.swift:176:32: warning: sending 'mock' risks causing data races; this is an error in the Swift 6 language mode
 174 |                     target: self,
 175 |                     selector: #selector(self.schedule(timer:)),
 176 |                     userInfo: (mock, config),
     |                                |- warning: sending 'mock' risks causing data races; this is an error in the Swift 6 language mode
     |                                `- note: task-isolated 'mock' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
 177 |                     repeats: false)
 178 |             } else {
[31/33] Compiling CoreBluetoothMock CBMMutableAttributes.swift
[32/33] Compiling CoreBluetoothMock CBMPeer.swift
[33/33] Compiling CoreBluetoothMock CBMPeripheral.swift
Build complete! (21.31s)
Fetching https://github.com/apple/swift-docc-plugin
[1/2345] Fetching swift-docc-plugin
Fetched https://github.com/apple/swift-docc-plugin from cache (1.34s)
Computing version for https://github.com/apple/swift-docc-plugin
Computed https://github.com/apple/swift-docc-plugin at 1.5.0 (4.44s)
Fetching https://github.com/swiftlang/swift-docc-symbolkit from cache
Fetched https://github.com/swiftlang/swift-docc-symbolkit from cache (1.08s)
Computing version for https://github.com/swiftlang/swift-docc-symbolkit
Computed https://github.com/swiftlang/swift-docc-symbolkit at 1.0.0 (1.77s)
Creating working copy for https://github.com/swiftlang/swift-docc-symbolkit
Working copy of https://github.com/swiftlang/swift-docc-symbolkit resolved at 1.0.0
Creating working copy for https://github.com/apple/swift-docc-plugin
Working copy of https://github.com/apple/swift-docc-plugin resolved at 1.5.0
Build complete.
{
  "dependencies" : [
    {
      "identity" : "swift-docc-plugin",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.5.0",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-docc-plugin"
    }
  ],
  "manifest_display_name" : "CoreBluetoothMock",
  "name" : "CoreBluetoothMock",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "macos",
      "version" : "10.14"
    },
    {
      "name" : "ios",
      "version" : "12.0"
    },
    {
      "name" : "watchos",
      "version" : "9.0"
    },
    {
      "name" : "tvos",
      "version" : "12.0"
    }
  ],
  "products" : [
    {
      "name" : "CoreBluetoothMock",
      "targets" : [
        "CoreBluetoothMock"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "swift_languages_versions" : [
    "5"
  ],
  "targets" : [
    {
      "c99name" : "CoreBluetoothMockTests",
      "module_type" : "SwiftTarget",
      "name" : "CoreBluetoothMockTests",
      "path" : "Tests/CoreBluetoothMockTests",
      "sources" : [
        "CentralBehaviorTestCase.swift",
        "CentralManagerAdvancedBehaviorTest.swift",
        "CentralManagerBehaviorTest.swift",
        "PeripheralBehaviorTest.swift",
        "PeripheralManagerBehaviorTest.swift",
        "PeripheralManagerTest.swift"
      ],
      "target_dependencies" : [
        "CoreBluetoothMock"
      ],
      "type" : "test"
    },
    {
      "c99name" : "CoreBluetoothMock",
      "module_type" : "SwiftTarget",
      "name" : "CoreBluetoothMock",
      "path" : "CoreBluetoothMock",
      "product_memberships" : [
        "CoreBluetoothMock"
      ],
      "sources" : [
        "CBMAttributes.swift",
        "CBMDictionary.swift",
        "CBMManagerTypes.swift",
        "CBMMutableAttributes.swift",
        "CBMPeer.swift",
        "CBMPeripheral.swift",
        "CBMPeripheralPreview.swift",
        "Central/CBMCentralManager.swift",
        "Central/CBMCentralManagerDelegate.swift",
        "Central/CBMCentralManagerDelegateProxy.swift",
        "Central/CBMCentralManagerFactory.swift",
        "Central/CBMCentralManagerMock.swift",
        "Central/CBMCentralManagerNative.swift",
        "Central/CBMPeripheralDelegate.swift",
        "Central/CBMPeripheralDelegateProxy.swift",
        "Central/PeripheralPeer/CBMPeripheralSpec.swift",
        "Central/PeripheralPeer/CBMPeripheralSpecDelegate.swift",
        "Peripheral/CBMATTRequest.swift",
        "Peripheral/CBMCentral.swift",
        "Peripheral/CBMPeripheralManager.swift",
        "Peripheral/CBMPeripheralManagerDelegate.swift",
        "Peripheral/CBMPeripheralManagerFactory.swift",
        "Peripheral/CBMPeripheralManagerMock.swift",
        "Peripheral/CBMPeripheralManagerNative.swift",
        "Peripheral/CentralPeer/CBMCentralSpec.swift",
        "Peripheral/CentralPeer/CBMCentralSpecDelegate.swift",
        "Specs/Blinky.swift",
        "Specs/UART.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.9"
}
Done.