The Swift Package Index logo.Swift Package Index

Has it really been five years since Swift Package Index launched? Read our anniversary blog post!

Build Information

Successful build of CoreBluetoothMock, reference 1.0.1 (d1e032), with Swift 6.1 for macOS (SPM) on 9 May 2025 11:57:08 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.61.3
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/NordicSemiconductor/IOS-CoreBluetooth-Mock.git
Reference: 1.0.1
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/NordicSemiconductor/IOS-CoreBluetooth-Mock
 * tag               1.0.1      -> FETCH_HEAD
HEAD is now at d1e0321 Merge pull request #134 from NordicSemiconductor/version/1.0.1
Cloned https://github.com/NordicSemiconductor/IOS-CoreBluetooth-Mock.git
Revision (git rev-parse @):
d1e0321027728da6edf5b974cf113524bad2034a
SUCCESS checkout https://github.com/NordicSemiconductor/IOS-CoreBluetooth-Mock.git at 1.0.1
warning: 'spi-builder-workspace': /Users/admin/builder/spi-builder-workspace/Package.swift:12:11: warning: 'v11' is deprecated: iOS 12.0 is the oldest supported version
10 |   platforms: [
11 |     .macOS(.v10_13),
12 |     .iOS(.v11),
   |           `- warning: 'v11' is deprecated: iOS 12.0 is the oldest supported version
13 |     .watchOS(.v4),
14 |     .tvOS(.v11)
/Users/admin/builder/spi-builder-workspace/Package.swift:14:12: warning: 'v11' is deprecated: tvOS 12.0 is the oldest supported version
12 |     .iOS(.v11),
13 |     .watchOS(.v4),
14 |     .tvOS(.v11)
   |            `- warning: 'v11' is deprecated: tvOS 12.0 is the oldest supported version
15 |   ],
16 |   products: [
Fetching https://github.com/apple/swift-docc-symbolkit
Fetching https://github.com/apple/swift-docc-plugin
[1/2049] Fetching swift-docc-plugin
[227/5426] Fetching swift-docc-plugin, swift-docc-symbolkit
Fetched https://github.com/apple/swift-docc-symbolkit from cache (1.27s)
Fetched https://github.com/apple/swift-docc-plugin from cache (1.27s)
Computing version for https://github.com/apple/swift-docc-plugin
Computed https://github.com/apple/swift-docc-plugin at 1.4.3 (2.33s)
Fetching https://github.com/swiftlang/swift-docc-symbolkit from cache
Fetched https://github.com/swiftlang/swift-docc-symbolkit from cache (0.77s)
Computing version for https://github.com/swiftlang/swift-docc-symbolkit
Computed https://github.com/swiftlang/swift-docc-symbolkit at 1.0.0 (1.45s)
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.3
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
========================================
ResolveProductDependencies
========================================
Resolving dependencies ...
{
  "identity": ".resolve-product-dependencies",
  "name": "resolve-dependencies",
  "url": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
  "version": "unspecified",
  "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
  "dependencies": [
    {
      "identity": "ios-corebluetooth-mock",
      "name": "CoreBluetoothMock",
      "url": "https://github.com/NordicSemiconductor/IOS-CoreBluetooth-Mock.git",
      "version": "unspecified",
      "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/IOS-CoreBluetooth-Mock",
      "dependencies": [
      ]
    }
  ]
}
Fetching https://github.com/NordicSemiconductor/IOS-CoreBluetooth-Mock.git
[1/6547] Fetching ios-corebluetooth-mock
Fetched https://github.com/NordicSemiconductor/IOS-CoreBluetooth-Mock.git from cache (1.21s)
warning: 'ios-corebluetooth-mock': /Package.swift:12:11: warning: 'v11' is deprecated: iOS 12.0 is the oldest supported version
10 |   platforms: [
11 |     .macOS(.v10_13),
12 |     .iOS(.v11),
   |           `- warning: 'v11' is deprecated: iOS 12.0 is the oldest supported version
13 |     .watchOS(.v4),
14 |     .tvOS(.v11)
/Package.swift:14:12: warning: 'v11' is deprecated: tvOS 12.0 is the oldest supported version
12 |     .iOS(.v11),
13 |     .watchOS(.v4),
14 |     .tvOS(.v11)
   |            `- warning: 'v11' is deprecated: tvOS 12.0 is the oldest supported version
15 |   ],
16 |   products: [
Creating working copy for https://github.com/NordicSemiconductor/IOS-CoreBluetooth-Mock.git
Working copy of https://github.com/NordicSemiconductor/IOS-CoreBluetooth-Mock.git resolved at 1.0.1 (d1e0321)
warning: 'ios-corebluetooth-mock': /Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/IOS-CoreBluetooth-Mock/Package.swift:12:11: warning: 'v11' is deprecated: iOS 12.0 is the oldest supported version
10 |   platforms: [
11 |     .macOS(.v10_13),
12 |     .iOS(.v11),
   |           `- warning: 'v11' is deprecated: iOS 12.0 is the oldest supported version
13 |     .watchOS(.v4),
14 |     .tvOS(.v11)
/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/IOS-CoreBluetooth-Mock/Package.swift:14:12: warning: 'v11' is deprecated: tvOS 12.0 is the oldest supported version
12 |     .iOS(.v11),
13 |     .watchOS(.v4),
14 |     .tvOS(.v11)
   |            `- warning: 'v11' is deprecated: tvOS 12.0 is the oldest supported version
15 |   ],
16 |   products: [
warning: '.resolve-product-dependencies': dependency 'ios-corebluetooth-mock' is not used by any target
Found 0 product dependencies
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.1
Building package at path:  $PWD
https://github.com/NordicSemiconductor/IOS-CoreBluetooth-Mock.git
https://github.com/NordicSemiconductor/IOS-CoreBluetooth-Mock.git
{
  "dependencies" : [
    {
      "identity" : "swift-docc-plugin",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.4.3",
            "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.13"
    },
    {
      "name" : "ios",
      "version" : "11.0"
    },
    {
      "name" : "watchos",
      "version" : "4.0"
    },
    {
      "name" : "tvos",
      "version" : "11.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/21] Compiling CoreBluetoothMock CBMAttributes.swift
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:454: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
452 | // MARK: - Mocking uninitialized objects
453 |
454 | 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
455 | fileprivate let uninitializedService        = CBMServiceUninitialized()
456 | fileprivate let uninitializedCharacteristic = CBMCharacteristicUninitialized()
457 |
458 | fileprivate class CBMPeripheralUninitialized: CBMPeripheral, CustomDebugStringConvertible {
    |                   `- note: class 'CBMPeripheralUninitialized' does not conform to the 'Sendable' protocol
459 |     let debugDescription: String = "<uninitialized>"
460 |
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:455: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
453 |
454 | fileprivate let uninitializedPeripheral   = CBMPeripheralUninitialized()
455 | 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
456 | fileprivate let uninitializedCharacteristic = CBMCharacteristicUninitialized()
457 |
    :
527 | }
528 |
529 | fileprivate class CBMServiceUninitialized: CBMService {
    |                   `- note: class 'CBMServiceUninitialized' does not conform to the 'Sendable' protocol
530 |     override var debugDescription: String { return "<uninitialized>" }
531 |     override var uuid: CBMUUID { uninitialized() }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:456: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
454 | fileprivate let uninitializedPeripheral   = CBMPeripheralUninitialized()
455 | fileprivate let uninitializedService        = CBMServiceUninitialized()
456 | 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
457 |
458 | fileprivate class CBMPeripheralUninitialized: CBMPeripheral, CustomDebugStringConvertible {
    :
545 | }
546 |
547 | fileprivate class CBMCharacteristicUninitialized: CBMCharacteristic {
    |                   `- note: class 'CBMCharacteristicUninitialized' does not conform to the 'Sendable' protocol
548 |     override var debugDescription: String { return "<uninitialized>" }
549 |     override var uuid: CBMUUID { uninitialized() }
[7/21] Compiling CoreBluetoothMock CBMCentralManager.swift
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:454: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
452 | // MARK: - Mocking uninitialized objects
453 |
454 | 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
455 | fileprivate let uninitializedService        = CBMServiceUninitialized()
456 | fileprivate let uninitializedCharacteristic = CBMCharacteristicUninitialized()
457 |
458 | fileprivate class CBMPeripheralUninitialized: CBMPeripheral, CustomDebugStringConvertible {
    |                   `- note: class 'CBMPeripheralUninitialized' does not conform to the 'Sendable' protocol
459 |     let debugDescription: String = "<uninitialized>"
460 |
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:455: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
453 |
454 | fileprivate let uninitializedPeripheral   = CBMPeripheralUninitialized()
455 | 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
456 | fileprivate let uninitializedCharacteristic = CBMCharacteristicUninitialized()
457 |
    :
527 | }
528 |
529 | fileprivate class CBMServiceUninitialized: CBMService {
    |                   `- note: class 'CBMServiceUninitialized' does not conform to the 'Sendable' protocol
530 |     override var debugDescription: String { return "<uninitialized>" }
531 |     override var uuid: CBMUUID { uninitialized() }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:456: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
454 | fileprivate let uninitializedPeripheral   = CBMPeripheralUninitialized()
455 | fileprivate let uninitializedService        = CBMServiceUninitialized()
456 | 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
457 |
458 | fileprivate class CBMPeripheralUninitialized: CBMPeripheral, CustomDebugStringConvertible {
    :
545 | }
546 |
547 | fileprivate class CBMCharacteristicUninitialized: CBMCharacteristic {
    |                   `- note: class 'CBMCharacteristicUninitialized' does not conform to the 'Sendable' protocol
548 |     override var debugDescription: String { return "<uninitialized>" }
549 |     override var uuid: CBMUUID { uninitialized() }
[8/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:193:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
191 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
192 | /// and how you access the descriptors.
193 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
194 |     internal let identifier: UUID
195 |     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:1255: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
     :
1253 |             let delay = interval * Double(newServicesCount)
1254 |             queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1255 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1256 |                     self.delegate?.peripheral(self,
1257 |                                               didDiscoverIncludedServicesFor: service,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1257:79: warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1255 |                 if let self = self, self.state == .connected {
1256 |                     self.delegate?.peripheral(self,
1257 |                                               didDiscoverIncludedServicesFor: service,
     |                                                                               `- warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1258 |                                               error: nil)
1259 |                 }
/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:1263: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
     :
1261 |         case .failure(let error):
1262 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1263 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1264 |                     self.delegate?.peripheral(self,
1265 |                                               didDiscoverIncludedServicesFor: service,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1265:79: warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1263 |                 if let self = self, self.state == .connected {
1264 |                     self.delegate?.peripheral(self,
1265 |                                               didDiscoverIncludedServicesFor: service,
     |                                                                               `- warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1266 |                                               error: error)
1267 |                 }
/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:1312: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
     :
1310 |             let delay = interval * Double(newCharacteristicsCount)
1311 |             queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1312 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1313 |                     self.delegate?.peripheral(self,
1314 |                                               didDiscoverCharacteristicsFor: service,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1314:78: warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1312 |                 if let self = self, self.state == .connected {
1313 |                     self.delegate?.peripheral(self,
1314 |                                               didDiscoverCharacteristicsFor: service,
     |                                                                              `- warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1315 |                                               error: nil)
1316 |                 }
/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:1320: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
     :
1318 |         case .failure(let error):
1319 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1320 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1321 |                     self.delegate?.peripheral(self,
1322 |                                               didDiscoverCharacteristicsFor: service,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1322:78: warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1320 |                 if let self = self, self.state == .connected {
1321 |                     self.delegate?.peripheral(self,
1322 |                                               didDiscoverCharacteristicsFor: service,
     |                                                                              `- warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1323 |                                               error: error)
1324 |                 }
/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:1361: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
     :
1359 |             let delay = interval * Double(newDescriptorsCount)
1360 |             queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1361 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1362 |                     self.delegate?.peripheral(self,
1363 |                                               didDiscoverDescriptorsFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1363:74: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1361 |                 if let self = self, self.state == .connected {
1362 |                     self.delegate?.peripheral(self,
1363 |                                               didDiscoverDescriptorsFor: characteristic,
     |                                                                          `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1364 |                                               error: nil)
1365 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:193:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
191 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
192 | /// and how you access the descriptors.
193 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
194 |     internal let identifier: UUID
195 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1369: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
     :
1367 |         case .failure(let error):
1368 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1369 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1370 |                     self.delegate?.peripheral(self,
1371 |                                               didDiscoverDescriptorsFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1371:74: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1369 |                 if let self = self, self.state == .connected {
1370 |                     self.delegate?.peripheral(self,
1371 |                                               didDiscoverDescriptorsFor: characteristic,
     |                                                                          `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1372 |                                               error: error)
1373 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:193:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
191 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
192 | /// and how you access the descriptors.
193 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
194 |     internal let identifier: UUID
195 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1396: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
     :
1394 |         case .success(let data):
1395 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1396 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1397 |                     characteristic.value = data
1398 |                     self.delegate?.peripheral(self,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1397:21: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1395 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1396 |                 if let self = self, self.state == .connected {
1397 |                     characteristic.value = data
     |                     `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1398 |                     self.delegate?.peripheral(self,
1399 |                                               didUpdateValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:193:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
191 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
192 | /// and how you access the descriptors.
193 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
194 |     internal let identifier: UUID
195 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1405: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
     :
1403 |         case .failure(let error):
1404 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1405 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1406 |                     self.delegate?.peripheral(self,
1407 |                                               didUpdateValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1407:66: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1405 |                 if let self = self, self.state == .connected {
1406 |                     self.delegate?.peripheral(self,
1407 |                                               didUpdateValueFor: characteristic,
     |                                                                  `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1408 |                                               error: error)
1409 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:193:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
191 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
192 | /// and how you access the descriptors.
193 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
194 |     internal let identifier: UUID
195 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1430: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
     :
1428 |         case .success(let data):
1429 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1430 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1431 |                     descriptor.value = data
1432 |                     self.delegate?.peripheral(self,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1431:21: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1429 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1430 |                 if let self = self, self.state == .connected {
1431 |                     descriptor.value = data
     |                     `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1432 |                     self.delegate?.peripheral(self,
1433 |                                               didUpdateValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:323:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
321 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
322 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
323 | open class CBMDescriptor: CBMAttribute {
    |            `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
324 |     internal let identifier: UUID
325 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1439: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
     :
1437 |         case .failure(let error):
1438 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1439 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1440 |                     self.delegate?.peripheral(self,
1441 |                                               didUpdateValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1441:66: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1439 |                 if let self = self, self.state == .connected {
1440 |                     self.delegate?.peripheral(self,
1441 |                                               didUpdateValueFor: descriptor,
     |                                                                  `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1442 |                                               error: error)
1443 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:323:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
321 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
322 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
323 | open class CBMDescriptor: CBMAttribute {
    |            `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
324 |     internal let identifier: UUID
325 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1474: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
     :
1472 |                 let delay = interval * Double(packetsCount)
1473 |                 queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1474 |                     if let self = self, self.state == .connected {
     |                                   `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1475 |                         self.delegate?.peripheral(self,
1476 |                                                   didWriteValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1476:69: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1474 |                     if let self = self, self.state == .connected {
1475 |                         self.delegate?.peripheral(self,
1476 |                                                   didWriteValueFor: characteristic,
     |                                                                     `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1477 |                                                   error: nil)
1478 |                     }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:193:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
191 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
192 | /// and how you access the descriptors.
193 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
194 |     internal let identifier: UUID
195 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1482: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
     :
1480 |             case .failure(let error):
1481 |                 queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1482 |                     if let self = self, self.state == .connected {
     |                                   `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1483 |                         self.delegate?.peripheral(self,
1484 |                                                   didWriteValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1484:69: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1482 |                     if let self = self, self.state == .connected {
1483 |                         self.delegate?.peripheral(self,
1484 |                                                   didWriteValueFor: characteristic,
     |                                                                     `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1485 |                                                   error: error)
1486 |                     }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:193:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
191 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
192 | /// and how you access the descriptors.
193 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
194 |     internal let identifier: UUID
195 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1504: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
     :
1502 |
1503 |             queue.async { [weak self] in
1504 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1505 |                     // Increase buffer.
1506 |                     self.mutex.sync {
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1536: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
     :
1534 |         case .success:
1535 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1536 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1537 |                     self.delegate?.peripheral(self,
1538 |                                               didWriteValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1538:65: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1536 |                 if let self = self, self.state == .connected {
1537 |                     self.delegate?.peripheral(self,
1538 |                                               didWriteValueFor: descriptor,
     |                                                                 `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1539 |                                               error: nil)
1540 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:323:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
321 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
322 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
323 | open class CBMDescriptor: CBMAttribute {
    |            `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
324 |     internal let identifier: UUID
325 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1544: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
     :
1542 |         case .failure(let error):
1543 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1544 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1545 |                     self.delegate?.peripheral(self,
1546 |                                               didWriteValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1546:65: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1544 |                 if let self = self, self.state == .connected {
1545 |                     self.delegate?.peripheral(self,
1546 |                                               didWriteValueFor: descriptor,
     |                                                                 `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1547 |                                               error: error)
1548 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:323:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
321 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
322 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
323 | open class CBMDescriptor: CBMAttribute {
    |            `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
324 |     internal let identifier: UUID
325 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1587: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
     :
1585 |         case .success:
1586 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1587 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1588 |                     characteristic.isNotifying = enabled
1589 |                     self.delegate?.peripheral(self,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1588:21: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1586 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1587 |                 if let self = self, self.state == .connected {
1588 |                     characteristic.isNotifying = enabled
     |                     `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1589 |                     self.delegate?.peripheral(self,
1590 |                                               didUpdateNotificationStateFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:193:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
191 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
192 | /// and how you access the descriptors.
193 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
194 |     internal let identifier: UUID
195 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1592:21: warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1590 |                                               didUpdateNotificationStateFor: characteristic,
1591 |                                               error: nil)
1592 |                     mockCharacteristic.isNotifying = enabled
     |                     `- warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1593 |                     self.mock.connectionDelegate?.peripheral(self.mock,
1594 |                                     didUpdateNotificationStateFor: mockCharacteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:284:12: note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
282 |
283 | /// Mock implementation of ``CBMCharacteristic``.
284 | open class CBMCharacteristicMock: CBMCharacteristic {
    |            `- note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
285 |
286 |     open override var descriptors: [CBMDescriptor]? {
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1600: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
     :
1598 |         case .failure(let error):
1599 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1600 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1601 |                     self.delegate?.peripheral(self,
1602 |                                               didUpdateNotificationStateFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1602:78: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1600 |                 if let self = self, self.state == .connected {
1601 |                     self.delegate?.peripheral(self,
1602 |                                               didUpdateNotificationStateFor: characteristic,
     |                                                                              `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1603 |                                               error: error)
1604 |                     self.mock.connectionDelegate?.peripheral(self.mock,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:193:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
191 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
192 | /// and how you access the descriptors.
193 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
194 |     internal let identifier: UUID
195 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1605:68: warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1603 |                                               error: error)
1604 |                     self.mock.connectionDelegate?.peripheral(self.mock,
1605 |                                     didUpdateNotificationStateFor: mockCharacteristic,
     |                                                                    `- warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1606 |                                     error: error)
1607 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:284:12: note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
282 |
283 | /// Mock implementation of ``CBMCharacteristic``.
284 | open class CBMCharacteristicMock: CBMCharacteristic {
    |            `- note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
285 |
286 |     open override var descriptors: [CBMDescriptor]? {
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1618: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
     :
1616 |         guard manager.ensurePoweredOn() else { return }
1617 |         queue.async { [weak self] in
1618 |             if let self = self, self.state == .connected {
     |                           `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1619 |                 let rssi = self.mock.proximity.RSSI
1620 |                 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 {
[9/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:193:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
191 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
192 | /// and how you access the descriptors.
193 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
194 |     internal let identifier: UUID
195 |     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:1255: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
     :
1253 |             let delay = interval * Double(newServicesCount)
1254 |             queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1255 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1256 |                     self.delegate?.peripheral(self,
1257 |                                               didDiscoverIncludedServicesFor: service,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1257:79: warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1255 |                 if let self = self, self.state == .connected {
1256 |                     self.delegate?.peripheral(self,
1257 |                                               didDiscoverIncludedServicesFor: service,
     |                                                                               `- warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1258 |                                               error: nil)
1259 |                 }
/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:1263: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
     :
1261 |         case .failure(let error):
1262 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1263 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1264 |                     self.delegate?.peripheral(self,
1265 |                                               didDiscoverIncludedServicesFor: service,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1265:79: warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1263 |                 if let self = self, self.state == .connected {
1264 |                     self.delegate?.peripheral(self,
1265 |                                               didDiscoverIncludedServicesFor: service,
     |                                                                               `- warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1266 |                                               error: error)
1267 |                 }
/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:1312: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
     :
1310 |             let delay = interval * Double(newCharacteristicsCount)
1311 |             queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1312 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1313 |                     self.delegate?.peripheral(self,
1314 |                                               didDiscoverCharacteristicsFor: service,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1314:78: warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1312 |                 if let self = self, self.state == .connected {
1313 |                     self.delegate?.peripheral(self,
1314 |                                               didDiscoverCharacteristicsFor: service,
     |                                                                              `- warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1315 |                                               error: nil)
1316 |                 }
/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:1320: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
     :
1318 |         case .failure(let error):
1319 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1320 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1321 |                     self.delegate?.peripheral(self,
1322 |                                               didDiscoverCharacteristicsFor: service,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1322:78: warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1320 |                 if let self = self, self.state == .connected {
1321 |                     self.delegate?.peripheral(self,
1322 |                                               didDiscoverCharacteristicsFor: service,
     |                                                                              `- warning: capture of 'service' with non-sendable type 'CBMService' in a '@Sendable' closure
1323 |                                               error: error)
1324 |                 }
/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:1361: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
     :
1359 |             let delay = interval * Double(newDescriptorsCount)
1360 |             queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1361 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1362 |                     self.delegate?.peripheral(self,
1363 |                                               didDiscoverDescriptorsFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1363:74: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1361 |                 if let self = self, self.state == .connected {
1362 |                     self.delegate?.peripheral(self,
1363 |                                               didDiscoverDescriptorsFor: characteristic,
     |                                                                          `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1364 |                                               error: nil)
1365 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:193:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
191 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
192 | /// and how you access the descriptors.
193 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
194 |     internal let identifier: UUID
195 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1369: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
     :
1367 |         case .failure(let error):
1368 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1369 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1370 |                     self.delegate?.peripheral(self,
1371 |                                               didDiscoverDescriptorsFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1371:74: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1369 |                 if let self = self, self.state == .connected {
1370 |                     self.delegate?.peripheral(self,
1371 |                                               didDiscoverDescriptorsFor: characteristic,
     |                                                                          `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1372 |                                               error: error)
1373 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:193:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
191 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
192 | /// and how you access the descriptors.
193 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
194 |     internal let identifier: UUID
195 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1396: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
     :
1394 |         case .success(let data):
1395 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1396 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1397 |                     characteristic.value = data
1398 |                     self.delegate?.peripheral(self,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1397:21: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1395 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1396 |                 if let self = self, self.state == .connected {
1397 |                     characteristic.value = data
     |                     `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1398 |                     self.delegate?.peripheral(self,
1399 |                                               didUpdateValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:193:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
191 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
192 | /// and how you access the descriptors.
193 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
194 |     internal let identifier: UUID
195 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1405: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
     :
1403 |         case .failure(let error):
1404 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1405 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1406 |                     self.delegate?.peripheral(self,
1407 |                                               didUpdateValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1407:66: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1405 |                 if let self = self, self.state == .connected {
1406 |                     self.delegate?.peripheral(self,
1407 |                                               didUpdateValueFor: characteristic,
     |                                                                  `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1408 |                                               error: error)
1409 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:193:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
191 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
192 | /// and how you access the descriptors.
193 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
194 |     internal let identifier: UUID
195 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1430: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
     :
1428 |         case .success(let data):
1429 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1430 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1431 |                     descriptor.value = data
1432 |                     self.delegate?.peripheral(self,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1431:21: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1429 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1430 |                 if let self = self, self.state == .connected {
1431 |                     descriptor.value = data
     |                     `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1432 |                     self.delegate?.peripheral(self,
1433 |                                               didUpdateValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:323:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
321 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
322 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
323 | open class CBMDescriptor: CBMAttribute {
    |            `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
324 |     internal let identifier: UUID
325 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1439: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
     :
1437 |         case .failure(let error):
1438 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1439 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1440 |                     self.delegate?.peripheral(self,
1441 |                                               didUpdateValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1441:66: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1439 |                 if let self = self, self.state == .connected {
1440 |                     self.delegate?.peripheral(self,
1441 |                                               didUpdateValueFor: descriptor,
     |                                                                  `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1442 |                                               error: error)
1443 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:323:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
321 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
322 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
323 | open class CBMDescriptor: CBMAttribute {
    |            `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
324 |     internal let identifier: UUID
325 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1474: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
     :
1472 |                 let delay = interval * Double(packetsCount)
1473 |                 queue.asyncAfter(deadline: .now() + delay) { [weak self] in
1474 |                     if let self = self, self.state == .connected {
     |                                   `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1475 |                         self.delegate?.peripheral(self,
1476 |                                                   didWriteValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1476:69: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1474 |                     if let self = self, self.state == .connected {
1475 |                         self.delegate?.peripheral(self,
1476 |                                                   didWriteValueFor: characteristic,
     |                                                                     `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1477 |                                                   error: nil)
1478 |                     }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:193:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
191 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
192 | /// and how you access the descriptors.
193 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
194 |     internal let identifier: UUID
195 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1482: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
     :
1480 |             case .failure(let error):
1481 |                 queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1482 |                     if let self = self, self.state == .connected {
     |                                   `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1483 |                         self.delegate?.peripheral(self,
1484 |                                                   didWriteValueFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1484:69: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1482 |                     if let self = self, self.state == .connected {
1483 |                         self.delegate?.peripheral(self,
1484 |                                                   didWriteValueFor: characteristic,
     |                                                                     `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1485 |                                                   error: error)
1486 |                     }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:193:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
191 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
192 | /// and how you access the descriptors.
193 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
194 |     internal let identifier: UUID
195 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1504: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
     :
1502 |
1503 |             queue.async { [weak self] in
1504 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1505 |                     // Increase buffer.
1506 |                     self.mutex.sync {
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1536: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
     :
1534 |         case .success:
1535 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1536 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1537 |                     self.delegate?.peripheral(self,
1538 |                                               didWriteValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1538:65: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1536 |                 if let self = self, self.state == .connected {
1537 |                     self.delegate?.peripheral(self,
1538 |                                               didWriteValueFor: descriptor,
     |                                                                 `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1539 |                                               error: nil)
1540 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:323:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
321 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
322 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
323 | open class CBMDescriptor: CBMAttribute {
    |            `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
324 |     internal let identifier: UUID
325 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1544: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
     :
1542 |         case .failure(let error):
1543 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1544 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1545 |                     self.delegate?.peripheral(self,
1546 |                                               didWriteValueFor: descriptor,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1546:65: warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1544 |                 if let self = self, self.state == .connected {
1545 |                     self.delegate?.peripheral(self,
1546 |                                               didWriteValueFor: descriptor,
     |                                                                 `- warning: capture of 'descriptor' with non-sendable type 'CBMDescriptor' in a '@Sendable' closure
1547 |                                               error: error)
1548 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:323:12: note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
321 | /// ``CBMUUID`` details six predefined descriptors and their corresponding value types. `CBMDescriptor` lists the
322 | /// predefined descriptors and the ``CBMUUID`` constants that represent them.
323 | open class CBMDescriptor: CBMAttribute {
    |            `- note: class 'CBMDescriptor' does not conform to the 'Sendable' protocol
324 |     internal let identifier: UUID
325 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1587: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
     :
1585 |         case .success:
1586 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1587 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1588 |                     characteristic.isNotifying = enabled
1589 |                     self.delegate?.peripheral(self,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1588:21: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1586 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1587 |                 if let self = self, self.state == .connected {
1588 |                     characteristic.isNotifying = enabled
     |                     `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1589 |                     self.delegate?.peripheral(self,
1590 |                                               didUpdateNotificationStateFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:193:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
191 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
192 | /// and how you access the descriptors.
193 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
194 |     internal let identifier: UUID
195 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1592:21: warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1590 |                                               didUpdateNotificationStateFor: characteristic,
1591 |                                               error: nil)
1592 |                     mockCharacteristic.isNotifying = enabled
     |                     `- warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1593 |                     self.mock.connectionDelegate?.peripheral(self.mock,
1594 |                                     didUpdateNotificationStateFor: mockCharacteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:284:12: note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
282 |
283 | /// Mock implementation of ``CBMCharacteristic``.
284 | open class CBMCharacteristicMock: CBMCharacteristic {
    |            `- note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
285 |
286 |     open override var descriptors: [CBMDescriptor]? {
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1600: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
     :
1598 |         case .failure(let error):
1599 |             queue.asyncAfter(deadline: .now() + interval) { [weak self] in
1600 |                 if let self = self, self.state == .connected {
     |                               `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1601 |                     self.delegate?.peripheral(self,
1602 |                                               didUpdateNotificationStateFor: characteristic,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1602:78: warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1600 |                 if let self = self, self.state == .connected {
1601 |                     self.delegate?.peripheral(self,
1602 |                                               didUpdateNotificationStateFor: characteristic,
     |                                                                              `- warning: capture of 'characteristic' with non-sendable type 'CBMCharacteristic' in a '@Sendable' closure
1603 |                                               error: error)
1604 |                     self.mock.connectionDelegate?.peripheral(self.mock,
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:193:12: note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
191 | /// of descriptors describing that value. The properties of a characteristic determine how you can use a characteristic’s value,
192 | /// and how you access the descriptors.
193 | open class CBMCharacteristic: CBMAttribute {
    |            `- note: class 'CBMCharacteristic' does not conform to the 'Sendable' protocol
194 |     internal let identifier: UUID
195 |     private let _uuid: CBMUUID
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1605:68: warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1603 |                                               error: error)
1604 |                     self.mock.connectionDelegate?.peripheral(self.mock,
1605 |                                     didUpdateNotificationStateFor: mockCharacteristic,
     |                                                                    `- warning: capture of 'mockCharacteristic' with non-sendable type 'CBMCharacteristicMock' in a '@Sendable' closure
1606 |                                     error: error)
1607 |                 }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:284:12: note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
282 |
283 | /// Mock implementation of ``CBMCharacteristic``.
284 | open class CBMCharacteristicMock: CBMCharacteristic {
    |            `- note: class 'CBMCharacteristicMock' does not conform to the 'Sendable' protocol
285 |
286 |     open override var descriptors: [CBMDescriptor]? {
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMCentralManagerMock.swift:1618: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
     :
1616 |         guard manager.ensurePoweredOn() else { return }
1617 |         queue.async { [weak self] in
1618 |             if let self = self, self.state == .connected {
     |                           `- warning: capture of 'self' with non-sendable type 'CBMPeripheralMock?' in a '@Sendable' closure
1619 |                 let rssi = self.mock.proximity.RSSI
1620 |                 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 {
[10/21] Emitting module CoreBluetoothMock
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:454: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
452 | // MARK: - Mocking uninitialized objects
453 |
454 | 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
455 | fileprivate let uninitializedService        = CBMServiceUninitialized()
456 | fileprivate let uninitializedCharacteristic = CBMCharacteristicUninitialized()
457 |
458 | fileprivate class CBMPeripheralUninitialized: CBMPeripheral, CustomDebugStringConvertible {
    |                   `- note: class 'CBMPeripheralUninitialized' does not conform to the 'Sendable' protocol
459 |     let debugDescription: String = "<uninitialized>"
460 |
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:455: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
453 |
454 | fileprivate let uninitializedPeripheral   = CBMPeripheralUninitialized()
455 | 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
456 | fileprivate let uninitializedCharacteristic = CBMCharacteristicUninitialized()
457 |
    :
527 | }
528 |
529 | fileprivate class CBMServiceUninitialized: CBMService {
    |                   `- note: class 'CBMServiceUninitialized' does not conform to the 'Sendable' protocol
530 |     override var debugDescription: String { return "<uninitialized>" }
531 |     override var uuid: CBMUUID { uninitialized() }
/Users/admin/builder/spi-builder-workspace/CoreBluetoothMock/CBMAttributes.swift:456: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
454 | fileprivate let uninitializedPeripheral   = CBMPeripheralUninitialized()
455 | fileprivate let uninitializedService        = CBMServiceUninitialized()
456 | 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
457 |
458 | fileprivate class CBMPeripheralUninitialized: CBMPeripheral, CustomDebugStringConvertible {
    :
545 | }
546 |
547 | fileprivate class CBMCharacteristicUninitialized: CBMCharacteristic {
    |                   `- note: class 'CBMCharacteristicUninitialized' does not conform to the 'Sendable' protocol
548 |     override var debugDescription: String { return "<uninitialized>" }
549 |     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)
[11/21] Compiling CoreBluetoothMock CBMCentralManagerDelegate.swift
[12/21] Compiling CoreBluetoothMock CBMCentralManagerDelegateProxy.swift
[13/21] Compiling CoreBluetoothMock CBMPeripheralDelegateProxy.swift
[14/21] Compiling CoreBluetoothMock CBMPeripheralPreview.swift
[15/21] 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 |         }
[16/21] 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 |         }
[17/21] Compiling CoreBluetoothMock CBMPeripheral.swift
[18/21] Compiling CoreBluetoothMock CBMPeripheralDelegate.swift
[19/21] Compiling CoreBluetoothMock CBMManagerTypes.swift
[20/21] Compiling CoreBluetoothMock CBMPeer.swift
[21/21] Compiling CoreBluetoothMock CBMPeripheralSpecDelegate.swift
Build complete! (14.89s)
warning: 'spi-builder-workspace': /Users/admin/builder/spi-builder-workspace/Package.swift:12:11: warning: 'v11' is deprecated: iOS 12.0 is the oldest supported version
10 |   platforms: [
11 |     .macOS(.v10_13),
12 |     .iOS(.v11),
   |           `- warning: 'v11' is deprecated: iOS 12.0 is the oldest supported version
13 |     .watchOS(.v4),
14 |     .tvOS(.v11)
/Users/admin/builder/spi-builder-workspace/Package.swift:14:12: warning: 'v11' is deprecated: tvOS 12.0 is the oldest supported version
12 |     .iOS(.v11),
13 |     .watchOS(.v4),
14 |     .tvOS(.v11)
   |            `- warning: 'v11' is deprecated: tvOS 12.0 is the oldest supported version
15 |   ],
16 |   products: [
Build complete.
{
  "dependencies" : [
    {
      "identity" : "swift-docc-plugin",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.4.3",
            "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.13"
    },
    {
      "name" : "ios",
      "version" : "11.0"
    },
    {
      "name" : "watchos",
      "version" : "4.0"
    },
    {
      "name" : "tvos",
      "version" : "11.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"
}
warning: 'spi-builder-workspace': /Users/admin/builder/spi-builder-workspace/Package.swift:12:11: warning: 'v11' is deprecated: iOS 12.0 is the oldest supported version
10 |   platforms: [
11 |     .macOS(.v10_13),
12 |     .iOS(.v11),
   |           `- warning: 'v11' is deprecated: iOS 12.0 is the oldest supported version
13 |     .watchOS(.v4),
14 |     .tvOS(.v11)
/Users/admin/builder/spi-builder-workspace/Package.swift:14:12: warning: 'v11' is deprecated: tvOS 12.0 is the oldest supported version
12 |     .iOS(.v11),
13 |     .watchOS(.v4),
14 |     .tvOS(.v11)
   |            `- warning: 'v11' is deprecated: tvOS 12.0 is the oldest supported version
15 |   ],
16 |   products: [
Done.