The Swift Package Index logo.Swift Package Index

Build Information

Successful build of CoreBluetoothMock, reference main (477998), with Swift 6.1 for macOS (SPM) on 1 Apr 2026 13:01:37 UTC.

Swift 6 data race errors: 11

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

========================================
RunAll
========================================
Builder version: 4.69.2
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/nordicsemi/IOS-CoreBluetooth-Mock.git
Reference: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/nordicsemi/IOS-CoreBluetooth-Mock
 * branch            main       -> FETCH_HEAD
 * [new branch]      main       -> origin/main
HEAD is now at 477998d Merge pull request #148 from NordicSemiconductor/version/1.0.4
Cloned https://github.com/nordicsemi/IOS-CoreBluetooth-Mock.git
Revision (git rev-parse @):
477998d850a2233e05d1941ed0b5a2385da8cf4d
SUCCESS checkout https://github.com/nordicsemi/IOS-CoreBluetooth-Mock.git at main
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.1
Building package at path:  $PWD
https://github.com/nordicsemi/IOS-CoreBluetooth-Mock.git
https://github.com/nordicsemi/IOS-CoreBluetooth-Mock.git
{
  "dependencies" : [
    {
      "identity" : "swift-docc-plugin",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.4.5",
            "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" : "4.0"
    },
    {
      "name" : "tvos",
      "version" : "12.0"
    }
  ],
  "products" : [
    {
      "name" : "CoreBluetoothMock",
      "targets" : [
        "CoreBluetoothMock"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "swift_languages_versions" : [
    "5"
  ],
  "targets" : [
    {
      "c99name" : "CoreBluetoothMock",
      "module_type" : "SwiftTarget",
      "name" : "CoreBluetoothMock",
      "path" : "CoreBluetoothMock",
      "product_memberships" : [
        "CoreBluetoothMock"
      ],
      "sources" : [
        "CBMAttributes.swift",
        "CBMCentralManager.swift",
        "CBMCentralManagerDelegate.swift",
        "CBMCentralManagerDelegateProxy.swift",
        "CBMCentralManagerFactory.swift",
        "CBMCentralManagerMock.swift",
        "CBMCentralManagerNative.swift",
        "CBMDictionary.swift",
        "CBMManagerTypes.swift",
        "CBMPeer.swift",
        "CBMPeripheral.swift",
        "CBMPeripheralDelegate.swift",
        "CBMPeripheralDelegateProxy.swift",
        "CBMPeripheralPreview.swift",
        "CBMPeripheralSpec.swift",
        "CBMPeripheralSpecDelegate.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.9"
}
Running build ...
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
[1/1] Compiling plugin Swift-DocC Preview
[2/2] Compiling plugin Swift-DocC
Building for debugging...
[2/4] Write sources
[3/4] Write swift-version-2F0A5646E1D333AE.txt
[5/20] Compiling CoreBluetoothMock CBMPeripheralSpec.swift
[6/20] Compiling CoreBluetoothMock CBMCentralManagerNative.swift
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerNative.swift:351:46: warning: capture of 'self' with non-sendable type 'CBMCentralManagerNative' in a '@Sendable' closure
 35 | ///
 36 | /// This manager can only interact with physical Bluetooth LE devices.
 37 | public class CBMCentralManagerNative: CBMCentralManager {
    |              `- note: class 'CBMCentralManagerNative' does not conform to the 'Sendable' protocol
 38 |     var observation: NSKeyValueObservation?
 39 |     @objc dynamic private var manager: CBCentralManager!
    :
349 |     private func addManagerObserver() {
350 |         observation = observe(\.manager?.isScanning, options: [.old, .new]) { _, change in
351 |             change.newValue?.flatMap { [weak self] new in
    |                                              `- warning: capture of 'self' with non-sendable type 'CBMCentralManagerNative' in a '@Sendable' closure
352 |                 self?.isScanning = new
353 |             }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMDictionary.swift:56:17: warning: capture of 'self' with non-sendable type 'CBMDictionary<Key, Value>?' in a '@Sendable' closure
 35 | /// - Note: This dictionary wrapper does not implement every possible operation and can be expanded as needed
 36 | /// for future use.
 37 | internal class CBMDictionary<Key: Hashable, Value> {
    |                `- note: generic class 'CBMDictionary' does not conform to the 'Sendable' protocol
 38 |     private var dictStorage = [Key: Value]()
 39 |
    :
 54 |         set {
 55 |             queue.async(flags: .barrier) { [weak self] in
 56 |                 self?.dictStorage[key] = newValue
    |                 `- warning: capture of 'self' with non-sendable type 'CBMDictionary<Key, Value>?' in a '@Sendable' closure
 57 |             }
 58 |         }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMDictionary.swift:56:35: warning: capture of 'key' with non-sendable type 'Key' in a '@Sendable' closure
 35 | /// - Note: This dictionary wrapper does not implement every possible operation and can be expanded as needed
 36 | /// for future use.
 37 | internal class CBMDictionary<Key: Hashable, Value> {
    |                              `- note: consider making generic parameter 'Key' conform to the 'Sendable' protocol
 38 |     private var dictStorage = [Key: Value]()
 39 |
    :
 54 |         set {
 55 |             queue.async(flags: .barrier) { [weak self] in
 56 |                 self?.dictStorage[key] = newValue
    |                                   `- warning: capture of 'key' with non-sendable type 'Key' in a '@Sendable' closure
 57 |             }
 58 |         }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMDictionary.swift:56:42: warning: capture of 'newValue' with non-sendable type 'Value?' in a '@Sendable' closure
 35 | /// - Note: This dictionary wrapper does not implement every possible operation and can be expanded as needed
 36 | /// for future use.
 37 | internal class CBMDictionary<Key: Hashable, Value> {
    |                                             `- note: consider making generic parameter 'Value' conform to the 'Sendable' protocol
 38 |     private var dictStorage = [Key: Value]()
 39 |
    :
 54 |         set {
 55 |             queue.async(flags: .barrier) { [weak self] in
 56 |                 self?.dictStorage[key] = newValue
    |                                          `- warning: capture of 'newValue' with non-sendable type 'Value?' in a '@Sendable' closure
 57 |             }
 58 |         }
[7/20] Compiling CoreBluetoothMock CBMDictionary.swift
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerNative.swift:351:46: warning: capture of 'self' with non-sendable type 'CBMCentralManagerNative' in a '@Sendable' closure
 35 | ///
 36 | /// This manager can only interact with physical Bluetooth LE devices.
 37 | public class CBMCentralManagerNative: CBMCentralManager {
    |              `- note: class 'CBMCentralManagerNative' does not conform to the 'Sendable' protocol
 38 |     var observation: NSKeyValueObservation?
 39 |     @objc dynamic private var manager: CBCentralManager!
    :
349 |     private func addManagerObserver() {
350 |         observation = observe(\.manager?.isScanning, options: [.old, .new]) { _, change in
351 |             change.newValue?.flatMap { [weak self] new in
    |                                              `- warning: capture of 'self' with non-sendable type 'CBMCentralManagerNative' in a '@Sendable' closure
352 |                 self?.isScanning = new
353 |             }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMDictionary.swift:56:17: warning: capture of 'self' with non-sendable type 'CBMDictionary<Key, Value>?' in a '@Sendable' closure
 35 | /// - Note: This dictionary wrapper does not implement every possible operation and can be expanded as needed
 36 | /// for future use.
 37 | internal class CBMDictionary<Key: Hashable, Value> {
    |                `- note: generic class 'CBMDictionary' does not conform to the 'Sendable' protocol
 38 |     private var dictStorage = [Key: Value]()
 39 |
    :
 54 |         set {
 55 |             queue.async(flags: .barrier) { [weak self] in
 56 |                 self?.dictStorage[key] = newValue
    |                 `- warning: capture of 'self' with non-sendable type 'CBMDictionary<Key, Value>?' in a '@Sendable' closure
 57 |             }
 58 |         }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMDictionary.swift:56:35: warning: capture of 'key' with non-sendable type 'Key' in a '@Sendable' closure
 35 | /// - Note: This dictionary wrapper does not implement every possible operation and can be expanded as needed
 36 | /// for future use.
 37 | internal class CBMDictionary<Key: Hashable, Value> {
    |                              `- note: consider making generic parameter 'Key' conform to the 'Sendable' protocol
 38 |     private var dictStorage = [Key: Value]()
 39 |
    :
 54 |         set {
 55 |             queue.async(flags: .barrier) { [weak self] in
 56 |                 self?.dictStorage[key] = newValue
    |                                   `- warning: capture of 'key' with non-sendable type 'Key' in a '@Sendable' closure
 57 |             }
 58 |         }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMDictionary.swift:56:42: warning: capture of 'newValue' with non-sendable type 'Value?' in a '@Sendable' closure
 35 | /// - Note: This dictionary wrapper does not implement every possible operation and can be expanded as needed
 36 | /// for future use.
 37 | internal class CBMDictionary<Key: Hashable, Value> {
    |                                             `- note: consider making generic parameter 'Value' conform to the 'Sendable' protocol
 38 |     private var dictStorage = [Key: Value]()
 39 |
    :
 54 |         set {
 55 |             queue.async(flags: .barrier) { [weak self] in
 56 |                 self?.dictStorage[key] = newValue
    |                                          `- warning: capture of 'newValue' with non-sendable type 'Value?' in a '@Sendable' closure
 57 |             }
 58 |         }
[8/20] Compiling CoreBluetoothMock CBMPeripheralDelegateProxy.swift
[9/20] Compiling CoreBluetoothMock CBMPeripheralPreview.swift
[10/20] Compiling CoreBluetoothMock CBMPeripheral.swift
[11/20] Compiling CoreBluetoothMock CBMPeripheralDelegate.swift
[12/21] Compiling CoreBluetoothMock CBMCentralManagerDelegate.swift
[13/21] Compiling CoreBluetoothMock CBMCentralManagerDelegateProxy.swift
[14/21] Compiling CoreBluetoothMock CBMAttributes.swift
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:512:17: warning: let 'uninitializedPeripheral' is not concurrency-safe because non-'Sendable' type 'CBMPeripheralUninitialized' may have shared mutable state; this is an error in the Swift 6 language mode
510 | // MARK: - Mocking uninitialized objects
511 |
512 | fileprivate let uninitializedPeripheral   = CBMPeripheralUninitialized()
    |                 |- warning: let 'uninitializedPeripheral' is not concurrency-safe because non-'Sendable' type 'CBMPeripheralUninitialized' may have shared mutable state; this is an error in the Swift 6 language mode
    |                 |- note: add '@MainActor' to make let 'uninitializedPeripheral' part of global actor 'MainActor'
    |                 `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
513 | fileprivate let uninitializedService        = CBMServiceUninitialized()
514 | fileprivate let uninitializedCharacteristic = CBMCharacteristicUninitialized()
515 |
516 | fileprivate class CBMPeripheralUninitialized: CBMPeripheral, CustomDebugStringConvertible {
    |                   `- note: class 'CBMPeripheralUninitialized' does not conform to the 'Sendable' protocol
517 |     let debugDescription: String = "<uninitialized>"
518 |
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:513:17: warning: let 'uninitializedService' is not concurrency-safe because non-'Sendable' type 'CBMServiceUninitialized' may have shared mutable state; this is an error in the Swift 6 language mode
511 |
512 | fileprivate let uninitializedPeripheral   = CBMPeripheralUninitialized()
513 | fileprivate let uninitializedService        = CBMServiceUninitialized()
    |                 |- warning: let 'uninitializedService' is not concurrency-safe because non-'Sendable' type 'CBMServiceUninitialized' may have shared mutable state; this is an error in the Swift 6 language mode
    |                 |- note: add '@MainActor' to make let 'uninitializedService' part of global actor 'MainActor'
    |                 `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
514 | fileprivate let uninitializedCharacteristic = CBMCharacteristicUninitialized()
515 |
    :
585 | }
586 |
587 | fileprivate class CBMServiceUninitialized: CBMService {
    |                   `- note: class 'CBMServiceUninitialized' does not conform to the 'Sendable' protocol
588 |     override var debugDescription: String { return "<uninitialized>" }
589 |     override var uuid: CBMUUID { uninitialized() }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:514:17: warning: let 'uninitializedCharacteristic' is not concurrency-safe because non-'Sendable' type 'CBMCharacteristicUninitialized' may have shared mutable state; this is an error in the Swift 6 language mode
512 | fileprivate let uninitializedPeripheral   = CBMPeripheralUninitialized()
513 | fileprivate let uninitializedService        = CBMServiceUninitialized()
514 | fileprivate let uninitializedCharacteristic = CBMCharacteristicUninitialized()
    |                 |- warning: let 'uninitializedCharacteristic' is not concurrency-safe because non-'Sendable' type 'CBMCharacteristicUninitialized' may have shared mutable state; this is an error in the Swift 6 language mode
    |                 |- note: add '@MainActor' to make let 'uninitializedCharacteristic' part of global actor 'MainActor'
    |                 `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
515 |
516 | fileprivate class CBMPeripheralUninitialized: CBMPeripheral, CustomDebugStringConvertible {
    :
603 | }
604 |
605 | fileprivate class CBMCharacteristicUninitialized: CBMCharacteristic {
    |                   `- note: class 'CBMCharacteristicUninitialized' does not conform to the 'Sendable' protocol
606 |     override var debugDescription: String { return "<uninitialized>" }
607 |     override var uuid: CBMUUID { uninitialized() }
[15/21] Compiling CoreBluetoothMock CBMCentralManager.swift
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:512:17: warning: let 'uninitializedPeripheral' is not concurrency-safe because non-'Sendable' type 'CBMPeripheralUninitialized' may have shared mutable state; this is an error in the Swift 6 language mode
510 | // MARK: - Mocking uninitialized objects
511 |
512 | fileprivate let uninitializedPeripheral   = CBMPeripheralUninitialized()
    |                 |- warning: let 'uninitializedPeripheral' is not concurrency-safe because non-'Sendable' type 'CBMPeripheralUninitialized' may have shared mutable state; this is an error in the Swift 6 language mode
    |                 |- note: add '@MainActor' to make let 'uninitializedPeripheral' part of global actor 'MainActor'
    |                 `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
513 | fileprivate let uninitializedService        = CBMServiceUninitialized()
514 | fileprivate let uninitializedCharacteristic = CBMCharacteristicUninitialized()
515 |
516 | fileprivate class CBMPeripheralUninitialized: CBMPeripheral, CustomDebugStringConvertible {
    |                   `- note: class 'CBMPeripheralUninitialized' does not conform to the 'Sendable' protocol
517 |     let debugDescription: String = "<uninitialized>"
518 |
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:513:17: warning: let 'uninitializedService' is not concurrency-safe because non-'Sendable' type 'CBMServiceUninitialized' may have shared mutable state; this is an error in the Swift 6 language mode
511 |
512 | fileprivate let uninitializedPeripheral   = CBMPeripheralUninitialized()
513 | fileprivate let uninitializedService        = CBMServiceUninitialized()
    |                 |- warning: let 'uninitializedService' is not concurrency-safe because non-'Sendable' type 'CBMServiceUninitialized' may have shared mutable state; this is an error in the Swift 6 language mode
    |                 |- note: add '@MainActor' to make let 'uninitializedService' part of global actor 'MainActor'
    |                 `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
514 | fileprivate let uninitializedCharacteristic = CBMCharacteristicUninitialized()
515 |
    :
585 | }
586 |
587 | fileprivate class CBMServiceUninitialized: CBMService {
    |                   `- note: class 'CBMServiceUninitialized' does not conform to the 'Sendable' protocol
588 |     override var debugDescription: String { return "<uninitialized>" }
589 |     override var uuid: CBMUUID { uninitialized() }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:514:17: warning: let 'uninitializedCharacteristic' is not concurrency-safe because non-'Sendable' type 'CBMCharacteristicUninitialized' may have shared mutable state; this is an error in the Swift 6 language mode
512 | fileprivate let uninitializedPeripheral   = CBMPeripheralUninitialized()
513 | fileprivate let uninitializedService        = CBMServiceUninitialized()
514 | fileprivate let uninitializedCharacteristic = CBMCharacteristicUninitialized()
    |                 |- warning: let 'uninitializedCharacteristic' is not concurrency-safe because non-'Sendable' type 'CBMCharacteristicUninitialized' may have shared mutable state; this is an error in the Swift 6 language mode
    |                 |- note: add '@MainActor' to make let 'uninitializedCharacteristic' part of global actor 'MainActor'
    |                 `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
515 |
516 | fileprivate class CBMPeripheralUninitialized: CBMPeripheral, CustomDebugStringConvertible {
    :
603 | }
604 |
605 | fileprivate class CBMCharacteristicUninitialized: CBMCharacteristic {
    |                   `- note: class 'CBMCharacteristicUninitialized' does not conform to the 'Sendable' protocol
606 |     override var debugDescription: String { return "<uninitialized>" }
607 |     override var uuid: CBMUUID { uninitialized() }
[16/21] Compiling CoreBluetoothMock CBMCentralManagerFactory.swift
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/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/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/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/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 |     /// A mutex queue for managing managers.
  56 |     private static let mutex: DispatchQueue = DispatchQueue(label: "Mutex")
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:60: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
  58 |     ///
  59 |     /// As `CBManagerAuthorization` was added in iOS 13, the raw value is kept.
  60 |     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
  61 |         didSet {
  62 |             notifyManagers()
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:72: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
  70 |     ///
  71 |     /// Defaults to 15 dBm.
  72 |     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
  73 |
  74 |     /// The global state of the Bluetooth adapter on the device.
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:75:41: 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
  73 |
  74 |     /// The global state of the Bluetooth adapter on the device.
  75 |     fileprivate 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
  76 |         didSet {
  77 |             notifyManagers()
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:419: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
 417 |     /// - SeeAlso: ``CBMCentralManagerRestoredStateScanServicesKey``
 418 |     /// - SeeAlso: ``CBMCentralManagerRestoredStateScanOptionsKey``
 419 |     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
 420 |
 421 |     #if !os(macOS)
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:97: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 |
     :
  95 |             // ...and notify delegate.
  96 |             manager.queue.async {
  97 |                 manager.delegate?.centralManagerDidUpdateState(manager)
     |                 `- warning: capture of 'manager' with non-sendable type 'CBMCentralManagerMock' in a '@Sendable' closure
  98 |             }
  99 |         }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:355: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 |
     :
 353 |         }
 354 |         queue.async { [weak self] in
 355 |             if let self = self {
     |                           `- warning: capture of 'self' with non-sendable type 'CBMCentralManagerMock?' in a '@Sendable' closure
 356 |                 CBMCentralManagerMock.mutex.sync {
 357 |                     CBMCentralManagerMock.managers.append(WeakRef(self))
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1012:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1010 |         if isAlreadyConnected {
1011 |             queue.async { [weak self] in
1012 |                 if let self = self, self.state == .connecting {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1013 |                     self.state = .connected
1014 |                     self._canSendWriteWithoutResponse = true
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1017:21: warning: capture of 'completion' with non-sendable type '(Result<Void, any Error>) -> ()' in a '@Sendable' closure
1015 |                     self.mock.wasConnected = true
1016 |                     self.mock.virtualConnections += 1
1017 |                     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'
1018 |                 }
1019 |             }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1025:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1023 |         let result = delegate.peripheralDidReceiveConnectionRequest(mock)
1024 |         queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1025 |             if let self = self, self.state == .connecting {
     |                           `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1026 |                 if case .success = result {
1027 |                     self.state = .connected
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1034:17: warning: capture of 'completion' with non-sendable type '(Result<Void, any Error>) -> ()' in a '@Sendable' closure
1032 |                     self.state = .disconnected
1033 |                 }
1034 |                 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'
1035 |             }
1036 |         }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1046:17: warning: capture of 'completion' with non-sendable type '() -> ()' in a '@Sendable' closure
1044 |             state = .disconnected
1045 |             queue.async {
1046 |                 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'
1047 |             }
1048 |             return
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1061:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1059 |             // `tearDownSimulation()` could have been called before this is called.
1060 |             // See https://github.com/NordicSemiconductor/IOS-CoreBluetooth-Mock/issues/25
1061 |             if let self = self, self.state == .disconnecting,
     |                           `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1062 |                CBMCentralManagerMock.managerState == .poweredOn {
1063 |                 self.state = .disconnected
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1073:17: warning: capture of 'completion' with non-sendable type '() -> ()' in a '@Sendable' closure
1071 |                                                              didDisconnect: nil)
1072 |                 }
1073 |                 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'
1074 |             }
1075 |         }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1093:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1091 |         }
1092 |         queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1093 |             if let self = self, CBMCentralManagerMock.managerState == .poweredOn {
     |                           `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1094 |                 if isReconnecting {
1095 |                     self.state = .connecting
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1101:17: warning: capture of 'completion' with non-sendable type '((any Error)?) -> ()' in a '@Sendable' closure
1099 |                 }
1100 |                 self._canSendWriteWithoutResponse = false
1101 |                 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'
1102 |             }
1103 |         }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1114:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1112 |         }
1113 |         queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1114 |             if let self = self, self.state == .connected {
     |                           `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1115 |                 self.delegate?.peripheralDidUpdateName(self)
1116 |             }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1137:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1135 |         let invalidatedServices = oldServices.filter { !services!.contains($0) }
1136 |         queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1137 |             if let self = self, self.state == .connected {
     |                           `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1138 |                 self.delegate?.peripheral(self, didModifyServices: invalidatedServices)
1139 |             }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1138:68: warning: capture of 'invalidatedServices' with non-sendable type '[CBMService]' in a '@Sendable' closure
1136 |         queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1137 |             if let self = self, self.state == .connected {
1138 |                 self.delegate?.peripheral(self, didModifyServices: invalidatedServices)
     |                                                                    `- warning: capture of 'invalidatedServices' with non-sendable type '[CBMService]' in a '@Sendable' closure
1139 |             }
1140 |         }
/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/CBMCentralManagerMock.swift:1160:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1158 |         let value = originalCharacteristic.value
1159 |         queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1160 |             if let self = self, self.state == .connected {
     |                           `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1161 |                 characteristic.value = value
1162 |                 self.delegate?.peripheral(self,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1161:17: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1159 |         queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1160 |             if let self = self, self.state == .connected {
1161 |                 characteristic.value = value
     |                 `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1162 |                 self.delegate?.peripheral(self,
1163 |                                           didUpdateValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:235:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
233 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
234 | /// and how you access the descriptors.
235 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
236 |     internal let identifier: UUID
237 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1207:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1205 |             let delay = interval * Double(newServicesCount)
1206 |             queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1207 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1208 |                     self.delegate?.peripheral(self, didDiscoverServices: nil)
1209 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1213:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1211 |         case .failure(let error):
1212 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1213 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1214 |                     self.delegate?.peripheral(self, didDiscoverServices: error)
1215 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1256:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1254 |             let delay = interval * Double(newServicesCount)
1255 |             queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1256 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1257 |                     self.delegate?.peripheral(self,
1258 |                                               didDiscoverIncludedServicesFor: service,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1258:79: warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1256 |                 if let self = self, self.state == .connected {
1257 |                     self.delegate?.peripheral(self,
1258 |                                               didDiscoverIncludedServicesFor: service,
     |                                                                               `- warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1259 |                                               error: nil)
1260 |                 }
/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/CBMCentralManagerMock.swift:1264:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1262 |         case .failure(let error):
1263 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1264 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1265 |                     self.delegate?.peripheral(self,
1266 |                                               didDiscoverIncludedServicesFor: service,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1266:79: warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1264 |                 if let self = self, self.state == .connected {
1265 |                     self.delegate?.peripheral(self,
1266 |                                               didDiscoverIncludedServicesFor: service,
     |                                                                               `- warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1267 |                                               error: error)
1268 |                 }
/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/CBMCentralManagerMock.swift:1310:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1308 |             let delay = interval * Double(newCharacteristicsCount)
1309 |             queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1310 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1311 |                     self.delegate?.peripheral(self,
1312 |                                               didDiscoverCharacteristicsFor: service,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1312:78: warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1310 |                 if let self = self, self.state == .connected {
1311 |                     self.delegate?.peripheral(self,
1312 |                                               didDiscoverCharacteristicsFor: service,
     |                                                                              `- warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1313 |                                               error: nil)
1314 |                 }
/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/CBMCentralManagerMock.swift:1318:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1316 |         case .failure(let error):
1317 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1318 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1319 |                     self.delegate?.peripheral(self,
1320 |                                               didDiscoverCharacteristicsFor: service,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1320:78: warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1318 |                 if let self = self, self.state == .connected {
1319 |                     self.delegate?.peripheral(self,
1320 |                                               didDiscoverCharacteristicsFor: service,
     |                                                                              `- warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1321 |                                               error: error)
1322 |                 }
/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/CBMCentralManagerMock.swift:1360:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1358 |             let delay = interval * Double(newDescriptorsCount)
1359 |             queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1360 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1361 |                     self.delegate?.peripheral(self,
1362 |                                               didDiscoverDescriptorsFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1362:74: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1360 |                 if let self = self, self.state == .connected {
1361 |                     self.delegate?.peripheral(self,
1362 |                                               didDiscoverDescriptorsFor: characteristic,
     |                                                                          `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1363 |                                               error: nil)
1364 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:235:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
233 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
234 | /// and how you access the descriptors.
235 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
236 |     internal let identifier: UUID
237 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1368:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1366 |         case .failure(let error):
1367 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1368 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1369 |                     self.delegate?.peripheral(self,
1370 |                                               didDiscoverDescriptorsFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1370:74: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1368 |                 if let self = self, self.state == .connected {
1369 |                     self.delegate?.peripheral(self,
1370 |                                               didDiscoverDescriptorsFor: characteristic,
     |                                                                          `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1371 |                                               error: error)
1372 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:235:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
233 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
234 | /// and how you access the descriptors.
235 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
236 |     internal let identifier: UUID
237 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1397:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1395 |         case .success(let data):
1396 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1397 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1398 |                     characteristic.value = data
1399 |                     self.delegate?.peripheral(self,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1398:21: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1396 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1397 |                 if let self = self, self.state == .connected {
1398 |                     characteristic.value = data
     |                     `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1399 |                     self.delegate?.peripheral(self,
1400 |                                               didUpdateValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:235:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
233 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
234 | /// and how you access the descriptors.
235 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
236 |     internal let identifier: UUID
237 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1406:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1404 |         case .failure(let error):
1405 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1406 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1407 |                     self.delegate?.peripheral(self,
1408 |                                               didUpdateValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1408:66: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1406 |                 if let self = self, self.state == .connected {
1407 |                     self.delegate?.peripheral(self,
1408 |                                               didUpdateValueFor: characteristic,
     |                                                                  `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1409 |                                               error: error)
1410 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:235:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
233 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
234 | /// and how you access the descriptors.
235 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
236 |     internal let identifier: UUID
237 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1433:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1431 |         case .success(let data):
1432 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1433 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1434 |                     descriptor.value = data
1435 |                     self.delegate?.peripheral(self,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1434:21: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1432 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1433 |                 if let self = self, self.state == .connected {
1434 |                     descriptor.value = data
     |                     `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1435 |                     self.delegate?.peripheral(self,
1436 |                                               didUpdateValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:377:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
375 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
376 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
377 | open class CBMDescriptor: CBMAttribute {
    |            `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
378 |     internal let identifier: UUID
379 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1442:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1440 |         case .failure(let error):
1441 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1442 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1443 |                     self.delegate?.peripheral(self,
1444 |                                               didUpdateValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1444:66: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1442 |                 if let self = self, self.state == .connected {
1443 |                     self.delegate?.peripheral(self,
1444 |                                               didUpdateValueFor: descriptor,
     |                                                                  `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1445 |                                               error: error)
1446 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:377:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
375 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
376 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
377 | open class CBMDescriptor: CBMAttribute {
    |            `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
378 |     internal let identifier: UUID
379 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1478:35: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1476 |                 let delay = interval * Double(packetsCount)
1477 |                 queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1478 |                     if let self = self, self.state == .connected {
     |                                   `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1479 |                         self.delegate?.peripheral(self,
1480 |                                                   didWriteValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1480:69: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1478 |                     if let self = self, self.state == .connected {
1479 |                         self.delegate?.peripheral(self,
1480 |                                                   didWriteValueFor: characteristic,
     |                                                                     `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1481 |                                                   error: nil)
1482 |                     }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:235:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
233 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
234 | /// and how you access the descriptors.
235 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
236 |     internal let identifier: UUID
237 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1486:35: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1484 |             case .failure(let error):
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 |                         self.delegate?.peripheral(self,
1488 |                                                   didWriteValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1488:69: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1486 |                     if let self = self, self.state == .connected {
1487 |                         self.delegate?.peripheral(self,
1488 |                                                   didWriteValueFor: characteristic,
     |                                                                     `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1489 |                                                   error: error)
1490 |                     }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:235:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
233 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
234 | /// and how you access the descriptors.
235 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
236 |     internal let identifier: UUID
237 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1508:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1506 |
1507 |             queue.async { [weak self] in
1508 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1509 |                     // Increase buffer.
1510 |                     self.mutex.sync {
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1541:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1539 |         case .success:
1540 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1541 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1542 |                     self.delegate?.peripheral(self,
1543 |                                               didWriteValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1543:65: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1541 |                 if let self = self, self.state == .connected {
1542 |                     self.delegate?.peripheral(self,
1543 |                                               didWriteValueFor: descriptor,
     |                                                                 `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1544 |                                               error: nil)
1545 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:377:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
375 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
376 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
377 | open class CBMDescriptor: CBMAttribute {
    |            `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
378 |     internal let identifier: UUID
379 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1549:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1547 |         case .failure(let error):
1548 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1549 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1550 |                     self.delegate?.peripheral(self,
1551 |                                               didWriteValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1551:65: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1549 |                 if let self = self, self.state == .connected {
1550 |                     self.delegate?.peripheral(self,
1551 |                                               didWriteValueFor: descriptor,
     |                                                                 `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1552 |                                               error: error)
1553 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:377:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
375 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
376 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
377 | open class CBMDescriptor: CBMAttribute {
    |            `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
378 |     internal let identifier: UUID
379 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1596:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1594 |         case .success:
1595 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1596 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1597 |                     characteristic.isNotifying = enabled
1598 |                     self.delegate?.peripheral(self,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1597:21: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1595 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1596 |                 if let self = self, self.state == .connected {
1597 |                     characteristic.isNotifying = enabled
     |                     `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1598 |                     self.delegate?.peripheral(self,
1599 |                                               didUpdateNotificationStateFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:235:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
233 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
234 | /// and how you access the descriptors.
235 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
236 |     internal let identifier: UUID
237 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1601:21: warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1599 |                                               didUpdateNotificationStateFor: characteristic,
1600 |                                               error: nil)
1601 |                     mockCharacteristic.isNotifying = enabled
     |                     `- warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1602 |                     delegate.peripheral(self.mock,
1603 |                                         didUpdateNotificationStateFor: mockCharacteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:338:12: note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
336 |
337 | /// Mock implementation of ``CBMCharacteristic``.
338 | open class CBMCharacteristicMock: CBMCharacteristic {
    |            `- note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
339 |
340 |     open override var descriptors: [CBMDescriptor]? {
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1602:21: warning: capture of 'delegate' with non-sendable type 'any CBMPeripheralSpecDelegate' in a '@Sendable' closure
1600 |                                               error: nil)
1601 |                     mockCharacteristic.isNotifying = enabled
1602 |                     delegate.peripheral(self.mock,
     |                     `- warning: capture of 'delegate' with non-sendable type 'any CBMPeripheralSpecDelegate' in a '@Sendable' closure
1603 |                                         didUpdateNotificationStateFor: mockCharacteristic,
1604 |                                         error: nil)
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/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/CBMCentralManagerMock.swift:1609:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1607 |         case .failure(let error):
1608 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1609 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1610 |                     self.delegate?.peripheral(self,
1611 |                                               didUpdateNotificationStateFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1611:78: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1609 |                 if let self = self, self.state == .connected {
1610 |                     self.delegate?.peripheral(self,
1611 |                                               didUpdateNotificationStateFor: characteristic,
     |                                                                              `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1612 |                                               error: error)
1613 |                     delegate.peripheral(self.mock,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:235:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
233 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
234 | /// and how you access the descriptors.
235 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
236 |     internal let identifier: UUID
237 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1613:21: warning: capture of 'delegate' with non-sendable type 'any CBMPeripheralSpecDelegate' in a '@Sendable' closure
1611 |                                               didUpdateNotificationStateFor: characteristic,
1612 |                                               error: error)
1613 |                     delegate.peripheral(self.mock,
     |                     `- warning: capture of 'delegate' with non-sendable type 'any CBMPeripheralSpecDelegate' in a '@Sendable' closure
1614 |                                         didUpdateNotificationStateFor: mockCharacteristic,
1615 |                                         error: error)
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/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/CBMCentralManagerMock.swift:1614:72: warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1612 |                                               error: error)
1613 |                     delegate.peripheral(self.mock,
1614 |                                         didUpdateNotificationStateFor: mockCharacteristic,
     |                                                                        `- warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1615 |                                         error: error)
1616 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:338:12: note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
336 |
337 | /// Mock implementation of ``CBMCharacteristic``.
338 | open class CBMCharacteristicMock: CBMCharacteristic {
    |            `- note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
339 |
340 |     open override var descriptors: [CBMDescriptor]? {
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1627:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1625 |         guard manager.ensurePoweredOn() else { return }
1626 |         queue.async { [weak self] in
1627 |             if let self = self, self.state == .connected {
     |                           `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1628 |                 let rssi = self.mock.proximity.RSSI
1629 |                 let delta = CBMCentralManagerMock.rssiDeviation.value
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:142:16: warning: sending 'config' risks causing data races; this is an error in the Swift 6 language mode
 140 |             // If the first advertising is to be delayed, create a
 141 |             // temporary timer that will call the initial data.
 142 |             if config.delay > 0 {
     |                |- 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
 143 |                 advertisementTimers[config] = Timer.scheduledTimer(
 144 |                     timeInterval: config.delay,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:147:32: warning: sending 'mock' risks causing data races; this is an error in the Swift 6 language mode
 145 |                     target: self,
 146 |                     selector: #selector(self.schedule(timer:)),
 147 |                     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
 148 |                     repeats: false)
 149 |             } else {
[17/21] Compiling CoreBluetoothMock CBMCentralManagerMock.swift
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/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/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/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/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 |     /// A mutex queue for managing managers.
  56 |     private static let mutex: DispatchQueue = DispatchQueue(label: "Mutex")
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:60: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
  58 |     ///
  59 |     /// As `CBManagerAuthorization` was added in iOS 13, the raw value is kept.
  60 |     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
  61 |         didSet {
  62 |             notifyManagers()
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:72: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
  70 |     ///
  71 |     /// Defaults to 15 dBm.
  72 |     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
  73 |
  74 |     /// The global state of the Bluetooth adapter on the device.
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:75:41: 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
  73 |
  74 |     /// The global state of the Bluetooth adapter on the device.
  75 |     fileprivate 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
  76 |         didSet {
  77 |             notifyManagers()
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:419: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
 417 |     /// - SeeAlso: ``CBMCentralManagerRestoredStateScanServicesKey``
 418 |     /// - SeeAlso: ``CBMCentralManagerRestoredStateScanOptionsKey``
 419 |     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
 420 |
 421 |     #if !os(macOS)
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:97: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 |
     :
  95 |             // ...and notify delegate.
  96 |             manager.queue.async {
  97 |                 manager.delegate?.centralManagerDidUpdateState(manager)
     |                 `- warning: capture of 'manager' with non-sendable type 'CBMCentralManagerMock' in a '@Sendable' closure
  98 |             }
  99 |         }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:355: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 |
     :
 353 |         }
 354 |         queue.async { [weak self] in
 355 |             if let self = self {
     |                           `- warning: capture of 'self' with non-sendable type 'CBMCentralManagerMock?' in a '@Sendable' closure
 356 |                 CBMCentralManagerMock.mutex.sync {
 357 |                     CBMCentralManagerMock.managers.append(WeakRef(self))
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1012:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1010 |         if isAlreadyConnected {
1011 |             queue.async { [weak self] in
1012 |                 if let self = self, self.state == .connecting {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1013 |                     self.state = .connected
1014 |                     self._canSendWriteWithoutResponse = true
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1017:21: warning: capture of 'completion' with non-sendable type '(Result<Void, any Error>) -> ()' in a '@Sendable' closure
1015 |                     self.mock.wasConnected = true
1016 |                     self.mock.virtualConnections += 1
1017 |                     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'
1018 |                 }
1019 |             }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1025:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1023 |         let result = delegate.peripheralDidReceiveConnectionRequest(mock)
1024 |         queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1025 |             if let self = self, self.state == .connecting {
     |                           `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1026 |                 if case .success = result {
1027 |                     self.state = .connected
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1034:17: warning: capture of 'completion' with non-sendable type '(Result<Void, any Error>) -> ()' in a '@Sendable' closure
1032 |                     self.state = .disconnected
1033 |                 }
1034 |                 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'
1035 |             }
1036 |         }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1046:17: warning: capture of 'completion' with non-sendable type '() -> ()' in a '@Sendable' closure
1044 |             state = .disconnected
1045 |             queue.async {
1046 |                 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'
1047 |             }
1048 |             return
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1061:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1059 |             // `tearDownSimulation()` could have been called before this is called.
1060 |             // See https://github.com/NordicSemiconductor/IOS-CoreBluetooth-Mock/issues/25
1061 |             if let self = self, self.state == .disconnecting,
     |                           `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1062 |                CBMCentralManagerMock.managerState == .poweredOn {
1063 |                 self.state = .disconnected
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1073:17: warning: capture of 'completion' with non-sendable type '() -> ()' in a '@Sendable' closure
1071 |                                                              didDisconnect: nil)
1072 |                 }
1073 |                 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'
1074 |             }
1075 |         }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1093:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1091 |         }
1092 |         queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1093 |             if let self = self, CBMCentralManagerMock.managerState == .poweredOn {
     |                           `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1094 |                 if isReconnecting {
1095 |                     self.state = .connecting
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1101:17: warning: capture of 'completion' with non-sendable type '((any Error)?) -> ()' in a '@Sendable' closure
1099 |                 }
1100 |                 self._canSendWriteWithoutResponse = false
1101 |                 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'
1102 |             }
1103 |         }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1114:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1112 |         }
1113 |         queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1114 |             if let self = self, self.state == .connected {
     |                           `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1115 |                 self.delegate?.peripheralDidUpdateName(self)
1116 |             }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1137:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1135 |         let invalidatedServices = oldServices.filter { !services!.contains($0) }
1136 |         queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1137 |             if let self = self, self.state == .connected {
     |                           `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1138 |                 self.delegate?.peripheral(self, didModifyServices: invalidatedServices)
1139 |             }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1138:68: warning: capture of 'invalidatedServices' with non-sendable type '[CBMService]' in a '@Sendable' closure
1136 |         queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1137 |             if let self = self, self.state == .connected {
1138 |                 self.delegate?.peripheral(self, didModifyServices: invalidatedServices)
     |                                                                    `- warning: capture of 'invalidatedServices' with non-sendable type '[CBMService]' in a '@Sendable' closure
1139 |             }
1140 |         }
/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/CBMCentralManagerMock.swift:1160:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1158 |         let value = originalCharacteristic.value
1159 |         queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1160 |             if let self = self, self.state == .connected {
     |                           `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1161 |                 characteristic.value = value
1162 |                 self.delegate?.peripheral(self,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1161:17: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1159 |         queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1160 |             if let self = self, self.state == .connected {
1161 |                 characteristic.value = value
     |                 `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1162 |                 self.delegate?.peripheral(self,
1163 |                                           didUpdateValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:235:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
233 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
234 | /// and how you access the descriptors.
235 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
236 |     internal let identifier: UUID
237 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1207:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1205 |             let delay = interval * Double(newServicesCount)
1206 |             queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1207 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1208 |                     self.delegate?.peripheral(self, didDiscoverServices: nil)
1209 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1213:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1211 |         case .failure(let error):
1212 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1213 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1214 |                     self.delegate?.peripheral(self, didDiscoverServices: error)
1215 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1256:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1254 |             let delay = interval * Double(newServicesCount)
1255 |             queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1256 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1257 |                     self.delegate?.peripheral(self,
1258 |                                               didDiscoverIncludedServicesFor: service,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1258:79: warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1256 |                 if let self = self, self.state == .connected {
1257 |                     self.delegate?.peripheral(self,
1258 |                                               didDiscoverIncludedServicesFor: service,
     |                                                                               `- warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1259 |                                               error: nil)
1260 |                 }
/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/CBMCentralManagerMock.swift:1264:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1262 |         case .failure(let error):
1263 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1264 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1265 |                     self.delegate?.peripheral(self,
1266 |                                               didDiscoverIncludedServicesFor: service,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1266:79: warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1264 |                 if let self = self, self.state == .connected {
1265 |                     self.delegate?.peripheral(self,
1266 |                                               didDiscoverIncludedServicesFor: service,
     |                                                                               `- warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1267 |                                               error: error)
1268 |                 }
/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/CBMCentralManagerMock.swift:1310:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1308 |             let delay = interval * Double(newCharacteristicsCount)
1309 |             queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1310 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1311 |                     self.delegate?.peripheral(self,
1312 |                                               didDiscoverCharacteristicsFor: service,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1312:78: warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1310 |                 if let self = self, self.state == .connected {
1311 |                     self.delegate?.peripheral(self,
1312 |                                               didDiscoverCharacteristicsFor: service,
     |                                                                              `- warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1313 |                                               error: nil)
1314 |                 }
/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/CBMCentralManagerMock.swift:1318:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1316 |         case .failure(let error):
1317 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1318 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1319 |                     self.delegate?.peripheral(self,
1320 |                                               didDiscoverCharacteristicsFor: service,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1320:78: warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1318 |                 if let self = self, self.state == .connected {
1319 |                     self.delegate?.peripheral(self,
1320 |                                               didDiscoverCharacteristicsFor: service,
     |                                                                              `- warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1321 |                                               error: error)
1322 |                 }
/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/CBMCentralManagerMock.swift:1360:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1358 |             let delay = interval * Double(newDescriptorsCount)
1359 |             queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1360 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1361 |                     self.delegate?.peripheral(self,
1362 |                                               didDiscoverDescriptorsFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1362:74: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1360 |                 if let self = self, self.state == .connected {
1361 |                     self.delegate?.peripheral(self,
1362 |                                               didDiscoverDescriptorsFor: characteristic,
     |                                                                          `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1363 |                                               error: nil)
1364 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:235:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
233 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
234 | /// and how you access the descriptors.
235 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
236 |     internal let identifier: UUID
237 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1368:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1366 |         case .failure(let error):
1367 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1368 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1369 |                     self.delegate?.peripheral(self,
1370 |                                               didDiscoverDescriptorsFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1370:74: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1368 |                 if let self = self, self.state == .connected {
1369 |                     self.delegate?.peripheral(self,
1370 |                                               didDiscoverDescriptorsFor: characteristic,
     |                                                                          `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1371 |                                               error: error)
1372 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:235:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
233 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
234 | /// and how you access the descriptors.
235 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
236 |     internal let identifier: UUID
237 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1397:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1395 |         case .success(let data):
1396 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1397 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1398 |                     characteristic.value = data
1399 |                     self.delegate?.peripheral(self,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1398:21: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1396 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1397 |                 if let self = self, self.state == .connected {
1398 |                     characteristic.value = data
     |                     `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1399 |                     self.delegate?.peripheral(self,
1400 |                                               didUpdateValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:235:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
233 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
234 | /// and how you access the descriptors.
235 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
236 |     internal let identifier: UUID
237 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1406:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1404 |         case .failure(let error):
1405 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1406 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1407 |                     self.delegate?.peripheral(self,
1408 |                                               didUpdateValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1408:66: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1406 |                 if let self = self, self.state == .connected {
1407 |                     self.delegate?.peripheral(self,
1408 |                                               didUpdateValueFor: characteristic,
     |                                                                  `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1409 |                                               error: error)
1410 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:235:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
233 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
234 | /// and how you access the descriptors.
235 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
236 |     internal let identifier: UUID
237 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1433:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1431 |         case .success(let data):
1432 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1433 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1434 |                     descriptor.value = data
1435 |                     self.delegate?.peripheral(self,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1434:21: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1432 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1433 |                 if let self = self, self.state == .connected {
1434 |                     descriptor.value = data
     |                     `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1435 |                     self.delegate?.peripheral(self,
1436 |                                               didUpdateValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:377:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
375 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
376 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
377 | open class CBMDescriptor: CBMAttribute {
    |            `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
378 |     internal let identifier: UUID
379 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1442:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1440 |         case .failure(let error):
1441 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1442 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1443 |                     self.delegate?.peripheral(self,
1444 |                                               didUpdateValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1444:66: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1442 |                 if let self = self, self.state == .connected {
1443 |                     self.delegate?.peripheral(self,
1444 |                                               didUpdateValueFor: descriptor,
     |                                                                  `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1445 |                                               error: error)
1446 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:377:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
375 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
376 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
377 | open class CBMDescriptor: CBMAttribute {
    |            `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
378 |     internal let identifier: UUID
379 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1478:35: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1476 |                 let delay = interval * Double(packetsCount)
1477 |                 queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1478 |                     if let self = self, self.state == .connected {
     |                                   `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1479 |                         self.delegate?.peripheral(self,
1480 |                                                   didWriteValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1480:69: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1478 |                     if let self = self, self.state == .connected {
1479 |                         self.delegate?.peripheral(self,
1480 |                                                   didWriteValueFor: characteristic,
     |                                                                     `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1481 |                                                   error: nil)
1482 |                     }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:235:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
233 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
234 | /// and how you access the descriptors.
235 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
236 |     internal let identifier: UUID
237 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1486:35: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1484 |             case .failure(let error):
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 |                         self.delegate?.peripheral(self,
1488 |                                                   didWriteValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1488:69: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1486 |                     if let self = self, self.state == .connected {
1487 |                         self.delegate?.peripheral(self,
1488 |                                                   didWriteValueFor: characteristic,
     |                                                                     `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1489 |                                                   error: error)
1490 |                     }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:235:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
233 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
234 | /// and how you access the descriptors.
235 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
236 |     internal let identifier: UUID
237 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1508:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1506 |
1507 |             queue.async { [weak self] in
1508 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1509 |                     // Increase buffer.
1510 |                     self.mutex.sync {
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1541:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1539 |         case .success:
1540 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1541 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1542 |                     self.delegate?.peripheral(self,
1543 |                                               didWriteValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1543:65: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1541 |                 if let self = self, self.state == .connected {
1542 |                     self.delegate?.peripheral(self,
1543 |                                               didWriteValueFor: descriptor,
     |                                                                 `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1544 |                                               error: nil)
1545 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:377:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
375 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
376 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
377 | open class CBMDescriptor: CBMAttribute {
    |            `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
378 |     internal let identifier: UUID
379 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1549:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1547 |         case .failure(let error):
1548 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1549 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1550 |                     self.delegate?.peripheral(self,
1551 |                                               didWriteValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1551:65: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1549 |                 if let self = self, self.state == .connected {
1550 |                     self.delegate?.peripheral(self,
1551 |                                               didWriteValueFor: descriptor,
     |                                                                 `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1552 |                                               error: error)
1553 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:377:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
375 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
376 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
377 | open class CBMDescriptor: CBMAttribute {
    |            `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
378 |     internal let identifier: UUID
379 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1596:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1594 |         case .success:
1595 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1596 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1597 |                     characteristic.isNotifying = enabled
1598 |                     self.delegate?.peripheral(self,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1597:21: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1595 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1596 |                 if let self = self, self.state == .connected {
1597 |                     characteristic.isNotifying = enabled
     |                     `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1598 |                     self.delegate?.peripheral(self,
1599 |                                               didUpdateNotificationStateFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:235:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
233 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
234 | /// and how you access the descriptors.
235 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
236 |     internal let identifier: UUID
237 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1601:21: warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1599 |                                               didUpdateNotificationStateFor: characteristic,
1600 |                                               error: nil)
1601 |                     mockCharacteristic.isNotifying = enabled
     |                     `- warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1602 |                     delegate.peripheral(self.mock,
1603 |                                         didUpdateNotificationStateFor: mockCharacteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:338:12: note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
336 |
337 | /// Mock implementation of ``CBMCharacteristic``.
338 | open class CBMCharacteristicMock: CBMCharacteristic {
    |            `- note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
339 |
340 |     open override var descriptors: [CBMDescriptor]? {
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1602:21: warning: capture of 'delegate' with non-sendable type 'any CBMPeripheralSpecDelegate' in a '@Sendable' closure
1600 |                                               error: nil)
1601 |                     mockCharacteristic.isNotifying = enabled
1602 |                     delegate.peripheral(self.mock,
     |                     `- warning: capture of 'delegate' with non-sendable type 'any CBMPeripheralSpecDelegate' in a '@Sendable' closure
1603 |                                         didUpdateNotificationStateFor: mockCharacteristic,
1604 |                                         error: nil)
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/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/CBMCentralManagerMock.swift:1609:31: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1607 |         case .failure(let error):
1608 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1609 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1610 |                     self.delegate?.peripheral(self,
1611 |                                               didUpdateNotificationStateFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1611:78: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1609 |                 if let self = self, self.state == .connected {
1610 |                     self.delegate?.peripheral(self,
1611 |                                               didUpdateNotificationStateFor: characteristic,
     |                                                                              `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1612 |                                               error: error)
1613 |                     delegate.peripheral(self.mock,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:235:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
233 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
234 | /// and how you access the descriptors.
235 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
236 |     internal let identifier: UUID
237 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1613:21: warning: capture of 'delegate' with non-sendable type 'any CBMPeripheralSpecDelegate' in a '@Sendable' closure
1611 |                                               didUpdateNotificationStateFor: characteristic,
1612 |                                               error: error)
1613 |                     delegate.peripheral(self.mock,
     |                     `- warning: capture of 'delegate' with non-sendable type 'any CBMPeripheralSpecDelegate' in a '@Sendable' closure
1614 |                                         didUpdateNotificationStateFor: mockCharacteristic,
1615 |                                         error: error)
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/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/CBMCentralManagerMock.swift:1614:72: warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1612 |                                               error: error)
1613 |                     delegate.peripheral(self.mock,
1614 |                                         didUpdateNotificationStateFor: mockCharacteristic,
     |                                                                        `- warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1615 |                                         error: error)
1616 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:338:12: note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
336 |
337 | /// Mock implementation of ``CBMCharacteristic``.
338 | open class CBMCharacteristicMock: CBMCharacteristic {
    |            `- note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
339 |
340 |     open override var descriptors: [CBMDescriptor]? {
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1627:27: warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
 884 | ///
 885 | /// Unless required, this class should not be accessed directly, but rather by the common protocol ``CBMPeripheral``.
 886 | @objc open class CBMPeripheralMock: CBMPeer, CBMPeripheral {
     |                  `- note: class 'CBMPeripheralMock' does not conform to the 'Sendable' protocol
 887 |     /// The parent central manager.
 888 |     private let manager: CBMCentralManagerMock
     :
1625 |         guard manager.ensurePoweredOn() else { return }
1626 |         queue.async { [weak self] in
1627 |             if let self = self, self.state == .connected {
     |                           `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1628 |                 let rssi = self.mock.proximity.RSSI
1629 |                 let delta = CBMCentralManagerMock.rssiDeviation.value
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:142:16: warning: sending 'config' risks causing data races; this is an error in the Swift 6 language mode
 140 |             // If the first advertising is to be delayed, create a
 141 |             // temporary timer that will call the initial data.
 142 |             if config.delay > 0 {
     |                |- 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
 143 |                 advertisementTimers[config] = Timer.scheduledTimer(
 144 |                     timeInterval: config.delay,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:147:32: warning: sending 'mock' risks causing data races; this is an error in the Swift 6 language mode
 145 |                     target: self,
 146 |                     selector: #selector(self.schedule(timer:)),
 147 |                     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
 148 |                     repeats: false)
 149 |             } else {
[18/21] Emitting module CoreBluetoothMock
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:512:17: warning: let 'uninitializedPeripheral' is not concurrency-safe because non-'Sendable' type 'CBMPeripheralUninitialized' may have shared mutable state; this is an error in the Swift 6 language mode
510 | // MARK: - Mocking uninitialized objects
511 |
512 | fileprivate let uninitializedPeripheral   = CBMPeripheralUninitialized()
    |                 |- warning: let 'uninitializedPeripheral' is not concurrency-safe because non-'Sendable' type 'CBMPeripheralUninitialized' may have shared mutable state; this is an error in the Swift 6 language mode
    |                 |- note: add '@MainActor' to make let 'uninitializedPeripheral' part of global actor 'MainActor'
    |                 `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
513 | fileprivate let uninitializedService        = CBMServiceUninitialized()
514 | fileprivate let uninitializedCharacteristic = CBMCharacteristicUninitialized()
515 |
516 | fileprivate class CBMPeripheralUninitialized: CBMPeripheral, CustomDebugStringConvertible {
    |                   `- note: class 'CBMPeripheralUninitialized' does not conform to the 'Sendable' protocol
517 |     let debugDescription: String = "<uninitialized>"
518 |
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:513:17: warning: let 'uninitializedService' is not concurrency-safe because non-'Sendable' type 'CBMServiceUninitialized' may have shared mutable state; this is an error in the Swift 6 language mode
511 |
512 | fileprivate let uninitializedPeripheral   = CBMPeripheralUninitialized()
513 | fileprivate let uninitializedService        = CBMServiceUninitialized()
    |                 |- warning: let 'uninitializedService' is not concurrency-safe because non-'Sendable' type 'CBMServiceUninitialized' may have shared mutable state; this is an error in the Swift 6 language mode
    |                 |- note: add '@MainActor' to make let 'uninitializedService' part of global actor 'MainActor'
    |                 `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
514 | fileprivate let uninitializedCharacteristic = CBMCharacteristicUninitialized()
515 |
    :
585 | }
586 |
587 | fileprivate class CBMServiceUninitialized: CBMService {
    |                   `- note: class 'CBMServiceUninitialized' does not conform to the 'Sendable' protocol
588 |     override var debugDescription: String { return "<uninitialized>" }
589 |     override var uuid: CBMUUID { uninitialized() }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:514:17: warning: let 'uninitializedCharacteristic' is not concurrency-safe because non-'Sendable' type 'CBMCharacteristicUninitialized' may have shared mutable state; this is an error in the Swift 6 language mode
512 | fileprivate let uninitializedPeripheral   = CBMPeripheralUninitialized()
513 | fileprivate let uninitializedService        = CBMServiceUninitialized()
514 | fileprivate let uninitializedCharacteristic = CBMCharacteristicUninitialized()
    |                 |- warning: let 'uninitializedCharacteristic' is not concurrency-safe because non-'Sendable' type 'CBMCharacteristicUninitialized' may have shared mutable state; this is an error in the Swift 6 language mode
    |                 |- note: add '@MainActor' to make let 'uninitializedCharacteristic' part of global actor 'MainActor'
    |                 `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
515 |
516 | fileprivate class CBMPeripheralUninitialized: CBMPeripheral, CustomDebugStringConvertible {
    :
603 | }
604 |
605 | fileprivate class CBMCharacteristicUninitialized: CBMCharacteristic {
    |                   `- note: class 'CBMCharacteristicUninitialized' does not conform to the 'Sendable' protocol
606 |     override var debugDescription: String { return "<uninitialized>" }
607 |     override var uuid: CBMUUID { uninitialized() }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/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/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/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/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 |     /// A mutex queue for managing managers.
  56 |     private static let mutex: DispatchQueue = DispatchQueue(label: "Mutex")
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:60: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
  58 |     ///
  59 |     /// As `CBManagerAuthorization` was added in iOS 13, the raw value is kept.
  60 |     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
  61 |         didSet {
  62 |             notifyManagers()
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:72: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
  70 |     ///
  71 |     /// Defaults to 15 dBm.
  72 |     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
  73 |
  74 |     /// The global state of the Bluetooth adapter on the device.
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:75:41: 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
  73 |
  74 |     /// The global state of the Bluetooth adapter on the device.
  75 |     fileprivate 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
  76 |         didSet {
  77 |             notifyManagers()
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:419: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
 417 |     /// - SeeAlso: ``CBMCentralManagerRestoredStateScanServicesKey``
 418 |     /// - SeeAlso: ``CBMCentralManagerRestoredStateScanOptionsKey``
 419 |     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
 420 |
 421 |     #if !os(macOS)
[19/21] Compiling CoreBluetoothMock CBMManagerTypes.swift
[20/21] Compiling CoreBluetoothMock CBMPeer.swift
[21/21] Compiling CoreBluetoothMock CBMPeripheralSpecDelegate.swift
Build complete! (21.13s)
Fetching https://github.com/apple/swift-docc-plugin
[1/2171] Fetching swift-docc-plugin
Fetched https://github.com/apple/swift-docc-plugin from cache (1.08s)
Computing version for https://github.com/apple/swift-docc-plugin
Computed https://github.com/apple/swift-docc-plugin at 1.4.6 (4.41s)
Fetching https://github.com/swiftlang/swift-docc-symbolkit from cache
Fetched https://github.com/swiftlang/swift-docc-symbolkit from cache (0.84s)
Computing version for https://github.com/swiftlang/swift-docc-symbolkit
Computed https://github.com/swiftlang/swift-docc-symbolkit at 1.0.0 (1.58s)
Creating working copy for https://github.com/apple/swift-docc-plugin
Working copy of https://github.com/apple/swift-docc-plugin resolved at 1.4.6
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
Build complete.
{
  "dependencies" : [
    {
      "identity" : "swift-docc-plugin",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.4.5",
            "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" : "4.0"
    },
    {
      "name" : "tvos",
      "version" : "12.0"
    }
  ],
  "products" : [
    {
      "name" : "CoreBluetoothMock",
      "targets" : [
        "CoreBluetoothMock"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "swift_languages_versions" : [
    "5"
  ],
  "targets" : [
    {
      "c99name" : "CoreBluetoothMock",
      "module_type" : "SwiftTarget",
      "name" : "CoreBluetoothMock",
      "path" : "CoreBluetoothMock",
      "product_memberships" : [
        "CoreBluetoothMock"
      ],
      "sources" : [
        "CBMAttributes.swift",
        "CBMCentralManager.swift",
        "CBMCentralManagerDelegate.swift",
        "CBMCentralManagerDelegateProxy.swift",
        "CBMCentralManagerFactory.swift",
        "CBMCentralManagerMock.swift",
        "CBMCentralManagerNative.swift",
        "CBMDictionary.swift",
        "CBMManagerTypes.swift",
        "CBMPeer.swift",
        "CBMPeripheral.swift",
        "CBMPeripheralDelegate.swift",
        "CBMPeripheralDelegateProxy.swift",
        "CBMPeripheralPreview.swift",
        "CBMPeripheralSpec.swift",
        "CBMPeripheralSpecDelegate.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.9"
}
Done.