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 Split, reference master (3fa719), with Swift 6.1 for macOS (SPM) on 29 Aug 2025 20:58:12 UTC.

Swift 6 data race errors: 21

Build Command

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

Build Log

/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SseConnectionHandler.swift:37:30: warning: capture of 'self' with non-sendable type 'SseConnectionHandler?' in a '@Sendable' closure
 9 | import Foundation
10 |
11 | class SseConnectionHandler {
   |       `- note: class 'SseConnectionHandler' does not conform to the 'Sendable' protocol
12 |     private let clientLock = NSLock()
13 |     private let sseClientFactory: SseClientFactory
   :
35 |         clearClientId()
36 |         DispatchQueue.general.async { [weak self] in
37 |             guard let self = self else { return }
   |                              `- warning: capture of 'self' with non-sendable type 'SseConnectionHandler?' in a '@Sendable' closure
38 |             guard let clientId = disconnectingClientId else { return }
39 |             let cli = self.getSseClient(id: clientId)
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SyncEventBroadcaster.swift:43:30: warning: capture of 'self' with non-sendable type 'DefaultSyncEventBroadcaster?' in a '@Sendable' closure
33 | /// to other components
34 | ///
35 | class DefaultSyncEventBroadcaster: SyncEventBroadcaster {
   |       `- note: class 'DefaultSyncEventBroadcaster' does not conform to the 'Sendable' protocol
36 |     let messageQueue = DispatchQueue(label: "split-sync-event-broadcaster",
37 |                                      attributes: .concurrent)
   :
41 |     func push(event: SyncStatusEvent) {
42 |         messageQueue.async { [weak self] in
43 |             guard let self = self else { return }
   |                              `- warning: capture of 'self' with non-sendable type 'DefaultSyncEventBroadcaster?' in a '@Sendable' closure
44 |             for handler in self.handlers {
45 |                 handler(event)
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SyncEventBroadcaster.swift:52:30: warning: capture of 'self' with non-sendable type 'DefaultSyncEventBroadcaster?' in a '@Sendable' closure
33 | /// to other components
34 | ///
35 | class DefaultSyncEventBroadcaster: SyncEventBroadcaster {
   |       `- note: class 'DefaultSyncEventBroadcaster' does not conform to the 'Sendable' protocol
36 |     let messageQueue = DispatchQueue(label: "split-sync-event-broadcaster",
37 |                                      attributes: .concurrent)
   :
50 |     func register(handler: @escaping IncomingMessageHandler) {
51 |         messageQueue.async(flags: .barrier) { [weak self] in
52 |             guard let self = self else { return }
   |                              `- warning: capture of 'self' with non-sendable type 'DefaultSyncEventBroadcaster?' in a '@Sendable' closure
53 |             self.handlers.append(handler)
54 |         }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SyncEventBroadcaster.swift:53:34: warning: capture of 'handler' with non-sendable type 'DefaultSyncEventBroadcaster.IncomingMessageHandler' (aka '(SyncStatusEvent) -> ()') in a '@Sendable' closure
51 |         messageQueue.async(flags: .barrier) { [weak self] in
52 |             guard let self = self else { return }
53 |             self.handlers.append(handler)
   |                                  |- warning: capture of 'handler' with non-sendable type 'DefaultSyncEventBroadcaster.IncomingMessageHandler' (aka '(SyncStatusEvent) -> ()') in a '@Sendable' closure
   |                                  `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
54 |         }
55 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SyncEventBroadcaster.swift:59:30: warning: capture of 'self' with non-sendable type 'DefaultSyncEventBroadcaster?' in a '@Sendable' closure
33 | /// to other components
34 | ///
35 | class DefaultSyncEventBroadcaster: SyncEventBroadcaster {
   |       `- note: class 'DefaultSyncEventBroadcaster' does not conform to the 'Sendable' protocol
36 |     let messageQueue = DispatchQueue(label: "split-sync-event-broadcaster",
37 |                                      attributes: .concurrent)
   :
57 |     func destroy() {
58 |         messageQueue.async(flags: .barrier) { [weak self] in
59 |             guard let self = self else { return }
   |                              `- warning: capture of 'self' with non-sendable type 'DefaultSyncEventBroadcaster?' in a '@Sendable' closure
60 |             self.handlers.removeAll()
61 |         }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SyncSegmentsUpdateWorker.swift:37:13: warning: capture of 'self' with non-sendable type 'SegmentsUpdateWorker' in a '@Sendable' closure
  9 | import Foundation
 10 |
 11 | class SegmentsUpdateWorker: UpdateWorker<MembershipsUpdateNotification> {
    |       `- note: class 'SegmentsUpdateWorker' does not conform to the 'Sendable' protocol
 12 |
 13 |     private let synchronizer: SegmentsSynchronizerWrapper
    :
 35 |     override func process(notification: MembershipsUpdateNotification) throws {
 36 |         processQueue.async {
 37 |             self.process(notification)
    |             `- warning: capture of 'self' with non-sendable type 'SegmentsUpdateWorker' in a '@Sendable' closure
 38 |         }
 39 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SyncUpdateWorker.swift:61:30: warning: capture of 'self' with non-sendable type 'SplitsUpdateWorker?' in a '@Sendable' closure
 25 | }
 26 |
 27 | class SplitsUpdateWorker: UpdateWorker<TargetingRuleUpdateNotification> {
    |       `- note: class 'SplitsUpdateWorker' does not conform to the 'Sendable' protocol
 28 |
 29 |     private let synchronizer: Synchronizer
    :
 59 |         processQueue.async { [weak self] in
 60 |
 61 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'SplitsUpdateWorker?' in a '@Sendable' closure
 62 |             let storedChangeNumber = getChangeNumber(notification.type)
 63 |             if storedChangeNumber >= notification.changeNumber {
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SyncUpdateWorker.swift:220:13: warning: capture of 'self' with non-sendable type 'SplitKillWorker' in a '@Sendable' closure
205 | }
206 |
207 | class SplitKillWorker: UpdateWorker<SplitKillNotification> {
    |       `- note: class 'SplitKillWorker' does not conform to the 'Sendable' protocol
208 |
209 |     private let synchronizer: Synchronizer
    :
218 |     override func process(notification: SplitKillNotification) throws {
219 |         processQueue.async {
220 |             self.process(notification)
    |             `- warning: capture of 'self' with non-sendable type 'SplitKillWorker' in a '@Sendable' closure
221 |         }
222 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/FeatureFlagsSynchronizer.swift:85:30: warning: capture of 'self' with non-sendable type 'DefaultFeatureFlagsSynchronizer?' in a '@Sendable' closure
 22 | }
 23 |
 24 | class DefaultFeatureFlagsSynchronizer: FeatureFlagsSynchronizer {
    |       `- note: class 'DefaultFeatureFlagsSynchronizer' does not conform to the 'Sendable' protocol
 25 |
 26 |     private var storageContainer: SplitStorageContainer
    :
 83 |
 84 |         DispatchQueue.general.async { [weak self] in
 85 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultFeatureFlagsSynchronizer?' in a '@Sendable' closure
 86 |
 87 |             let start = Date.nowMillis()
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/FeatureFlagsSynchronizer.swift:94:17: warning: capture of 'splitsStorage' with non-sendable type 'any SplitsStorage' in a '@Sendable' closure
 92 |             if shouldForceParse() {
 93 |                 Logger.v("Force Parsing flags")
 94 |                 splitsStorage.forceParsing()
    |                 `- warning: capture of 'splitsStorage' with non-sendable type 'any SplitsStorage' in a '@Sendable' closure
 95 |                 ruleBasedSegmentsStorage.forceParsing()
 96 |                 TimeChecker.logInterval("Time for Force Parsing", startTime: start)
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsStorage.swift:15:10: note: protocol 'SplitsStorage' does not conform to the 'Sendable' protocol
 13 | }
 14 |
 15 | protocol SplitsStorage: SyncSplitsStorage {
    |          `- note: protocol 'SplitsStorage' does not conform to the 'Sendable' protocol
 16 |     var changeNumber: Int64 { get }
 17 |     var updateTimestamp: Int64 { get }
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/FeatureFlagsSynchronizer.swift:95:17: warning: capture of 'ruleBasedSegmentsStorage' with non-sendable type 'any RuleBasedSegmentsStorage' in a '@Sendable' closure
 93 |                 Logger.v("Force Parsing flags")
 94 |                 splitsStorage.forceParsing()
 95 |                 ruleBasedSegmentsStorage.forceParsing()
    |                 `- warning: capture of 'ruleBasedSegmentsStorage' with non-sendable type 'any RuleBasedSegmentsStorage' in a '@Sendable' closure
 96 |                 TimeChecker.logInterval("Time for Force Parsing", startTime: start)
 97 |             }
/Users/admin/builder/spi-builder-workspace/Split/Storage/RuleBasedSegments/RuleBasedSegmentsStorage.swift:11:10: note: protocol 'RuleBasedSegmentsStorage' does not conform to the 'Sendable' protocol
  9 | import Foundation
 10 |
 11 | protocol RuleBasedSegmentsStorage: RolloutDefinitionsCache {
    |          `- note: protocol 'RuleBasedSegmentsStorage' does not conform to the 'Sendable' protocol
 12 |     var changeNumber: Int64 { get }
 13 |
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/MySegmentsSynchronizer.swift:82:30: warning: capture of 'self' with non-sendable type 'DefaultMySegmentsSynchronizer?' in a '@Sendable' closure
 21 |
 22 | // One instance per client
 23 | class DefaultMySegmentsSynchronizer: MySegmentsSynchronizer {
    |       `- note: class 'DefaultMySegmentsSynchronizer' does not conform to the 'Sendable' protocol
 24 |
 25 |     private let mySegmentsStorage: ByKeyMySegmentsStorage
    :
 80 |         }
 81 |         DispatchQueue.general.async { [weak self] in
 82 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultMySegmentsSynchronizer?' in a '@Sendable' closure
 83 |             self.mySegmentsStorage.loadLocal()
 84 |             self.eventsManager.notifyInternalEvent(.mySegmentsLoadedFromCache)
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/Synchronizer.swift:197:30: warning: capture of 'self' with non-sendable type 'DefaultSynchronizer?' in a '@Sendable' closure
 45 | }
 46 |
 47 | class DefaultSynchronizer: Synchronizer {
    |       `- note: class 'DefaultSynchronizer' does not conform to the 'Sendable' protocol
 48 |
 49 |     private let splitConfig: SplitClientConfig
    :
195 |     func pushEvent(event: EventDTO) {
196 |         flushQueue.async { [weak self] in
197 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultSynchronizer?' in a '@Sendable' closure
198 |             self.eventsSynchronizer.push(event)
199 |         }
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/Synchronizer.swift:198:42: warning: capture of 'event' with non-sendable type 'EventDTO' in a '@Sendable' closure
196 |         flushQueue.async { [weak self] in
197 |             guard let self = self else { return }
198 |             self.eventsSynchronizer.push(event)
    |                                          `- warning: capture of 'event' with non-sendable type 'EventDTO' in a '@Sendable' closure
199 |         }
200 |     }
/Users/admin/builder/spi-builder-workspace/Split/Track/Models/EventDTO.swift:11:7: note: class 'EventDTO' does not conform to the 'Sendable' protocol
 9 |
10 | // TODO: Rename to Event
11 | class EventDTO: DynamicCodable {
   |       `- note: class 'EventDTO' does not conform to the 'Sendable' protocol
12 |     var storageId: String?
13 |     var key: String?
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/Synchronizer.swift:204:30: warning: capture of 'self' with non-sendable type 'DefaultSynchronizer?' in a '@Sendable' closure
 45 | }
 46 |
 47 | class DefaultSynchronizer: Synchronizer {
    |       `- note: class 'DefaultSynchronizer' does not conform to the 'Sendable' protocol
 48 |
 49 |     private let splitConfig: SplitClientConfig
    :
202 |     func pushImpression(impression: DecoratedImpression) {
203 |         flushQueue.async { [weak self] in
204 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultSynchronizer?' in a '@Sendable' closure
205 |
206 |             self.impressionsTracker.push(impression)
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/Synchronizer.swift:245:30: warning: capture of 'self' with non-sendable type 'DefaultSynchronizer?' in a '@Sendable' closure
 45 | }
 46 |
 47 | class DefaultSynchronizer: Synchronizer {
    |       `- note: class 'DefaultSynchronizer' does not conform to the 'Sendable' protocol
 48 |
 49 |     private let splitConfig: SplitClientConfig
    :
243 |     func flush() {
244 |         flushQueue.async {  [weak self] in
245 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultSynchronizer?' in a '@Sendable' closure
246 |
247 |             self.impressionsTracker.flush()
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/TelemetrySynchronizer.swift:37:13: warning: capture of 'self' with non-sendable type 'DefaultTelemetrySynchronizer' in a '@Sendable' closure
18 | }
19 |
20 | class DefaultTelemetrySynchronizer: TelemetrySynchronizer {
   |       `- note: class 'DefaultTelemetrySynchronizer' does not conform to the 'Sendable' protocol
21 |
22 |     private let configRecorderWorker: RecorderWorker
   :
35 |     func synchronizeConfig() {
36 |         syncQueue.async {
37 |             self.configRecorderWorker.flush()
   |             `- warning: capture of 'self' with non-sendable type 'DefaultTelemetrySynchronizer' in a '@Sendable' closure
38 |         }
39 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/TelemetrySynchronizer.swift:43:13: warning: capture of 'self' with non-sendable type 'DefaultTelemetrySynchronizer' in a '@Sendable' closure
18 | }
19 |
20 | class DefaultTelemetrySynchronizer: TelemetrySynchronizer {
   |       `- note: class 'DefaultTelemetrySynchronizer' does not conform to the 'Sendable' protocol
21 |
22 |     private let configRecorderWorker: RecorderWorker
   :
41 |     func synchronizeStats() {
42 |         syncQueue.async {
43 |             self.statsRecorderWorker.flush()
   |             `- warning: capture of 'self' with non-sendable type 'DefaultTelemetrySynchronizer' in a '@Sendable' closure
44 |         }
45 |     }
/Users/admin/builder/spi-builder-workspace/Split/Secure/SecureDataStore.swift:18:16: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'SecureDataStore' may have shared mutable state; this is an error in the Swift 6 language mode
  8 | import Foundation
  9 |
 10 | class SecureDataStore {
    |       `- note: class 'SecureDataStore' does not conform to the 'Sendable' protocol
 11 |
 12 |     enum Asset: String {
    :
 16 |     private var token: String?
 17 |
 18 |     static let shared: SecureDataStore = {
    |                |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'SecureDataStore' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 19 |         let instance = SecureDataStore()
 20 |
[333/361] Compiling Split SyncManagerBuilder.swift
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SseClient.swift:54:30: warning: capture of 'self' with non-sendable type 'DefaultSseClient?' in a '@Sendable' closure
 23 | }
 24 |
 25 | class DefaultSseClient: SseClient {
    |       `- note: class 'DefaultSseClient' does not conform to the 'Sendable' protocol
 26 |
 27 |     ///
    :
 52 |     func connect(token: String, channels: [String], completion: @escaping CompletionHandler) {
 53 |         queue.async(flags: .barrier) { [weak self] in
 54 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultSseClient?' in a '@Sendable' closure
 55 |             let parameters: [String: Any] = [
 56 |                 SseClientConstants.pushNotificationTokenParam: token,
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SseClient.swift:65:80: warning: capture of 'completion' with non-sendable type 'DefaultSseClient.CompletionHandler' (aka '(Bool) -> ()') in a '@Sendable' closure
 63 |                     parameters: HttpParameters(values: parameters),
 64 |                     headers: self.endpoint.headers)
 65 |                 .getResponse(responseHandler: self.responseHandler(completion: completion),
    |                                                                                |- warning: capture of 'completion' with non-sendable type 'DefaultSseClient.CompletionHandler' (aka '(Bool) -> ()') in a '@Sendable' closure
    |                                                                                `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 66 |                              incomingDataHandler: self.incommingDataHandler(completion: completion),
 67 |                              closeHandler: self.closeHandler(),
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SseConnectionHandler.swift:37:30: warning: capture of 'self' with non-sendable type 'SseConnectionHandler?' in a '@Sendable' closure
 9 | import Foundation
10 |
11 | class SseConnectionHandler {
   |       `- note: class 'SseConnectionHandler' does not conform to the 'Sendable' protocol
12 |     private let clientLock = NSLock()
13 |     private let sseClientFactory: SseClientFactory
   :
35 |         clearClientId()
36 |         DispatchQueue.general.async { [weak self] in
37 |             guard let self = self else { return }
   |                              `- warning: capture of 'self' with non-sendable type 'SseConnectionHandler?' in a '@Sendable' closure
38 |             guard let clientId = disconnectingClientId else { return }
39 |             let cli = self.getSseClient(id: clientId)
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SyncEventBroadcaster.swift:43:30: warning: capture of 'self' with non-sendable type 'DefaultSyncEventBroadcaster?' in a '@Sendable' closure
33 | /// to other components
34 | ///
35 | class DefaultSyncEventBroadcaster: SyncEventBroadcaster {
   |       `- note: class 'DefaultSyncEventBroadcaster' does not conform to the 'Sendable' protocol
36 |     let messageQueue = DispatchQueue(label: "split-sync-event-broadcaster",
37 |                                      attributes: .concurrent)
   :
41 |     func push(event: SyncStatusEvent) {
42 |         messageQueue.async { [weak self] in
43 |             guard let self = self else { return }
   |                              `- warning: capture of 'self' with non-sendable type 'DefaultSyncEventBroadcaster?' in a '@Sendable' closure
44 |             for handler in self.handlers {
45 |                 handler(event)
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SyncEventBroadcaster.swift:52:30: warning: capture of 'self' with non-sendable type 'DefaultSyncEventBroadcaster?' in a '@Sendable' closure
33 | /// to other components
34 | ///
35 | class DefaultSyncEventBroadcaster: SyncEventBroadcaster {
   |       `- note: class 'DefaultSyncEventBroadcaster' does not conform to the 'Sendable' protocol
36 |     let messageQueue = DispatchQueue(label: "split-sync-event-broadcaster",
37 |                                      attributes: .concurrent)
   :
50 |     func register(handler: @escaping IncomingMessageHandler) {
51 |         messageQueue.async(flags: .barrier) { [weak self] in
52 |             guard let self = self else { return }
   |                              `- warning: capture of 'self' with non-sendable type 'DefaultSyncEventBroadcaster?' in a '@Sendable' closure
53 |             self.handlers.append(handler)
54 |         }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SyncEventBroadcaster.swift:53:34: warning: capture of 'handler' with non-sendable type 'DefaultSyncEventBroadcaster.IncomingMessageHandler' (aka '(SyncStatusEvent) -> ()') in a '@Sendable' closure
51 |         messageQueue.async(flags: .barrier) { [weak self] in
52 |             guard let self = self else { return }
53 |             self.handlers.append(handler)
   |                                  |- warning: capture of 'handler' with non-sendable type 'DefaultSyncEventBroadcaster.IncomingMessageHandler' (aka '(SyncStatusEvent) -> ()') in a '@Sendable' closure
   |                                  `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
54 |         }
55 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SyncEventBroadcaster.swift:59:30: warning: capture of 'self' with non-sendable type 'DefaultSyncEventBroadcaster?' in a '@Sendable' closure
33 | /// to other components
34 | ///
35 | class DefaultSyncEventBroadcaster: SyncEventBroadcaster {
   |       `- note: class 'DefaultSyncEventBroadcaster' does not conform to the 'Sendable' protocol
36 |     let messageQueue = DispatchQueue(label: "split-sync-event-broadcaster",
37 |                                      attributes: .concurrent)
   :
57 |     func destroy() {
58 |         messageQueue.async(flags: .barrier) { [weak self] in
59 |             guard let self = self else { return }
   |                              `- warning: capture of 'self' with non-sendable type 'DefaultSyncEventBroadcaster?' in a '@Sendable' closure
60 |             self.handlers.removeAll()
61 |         }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SyncSegmentsUpdateWorker.swift:37:13: warning: capture of 'self' with non-sendable type 'SegmentsUpdateWorker' in a '@Sendable' closure
  9 | import Foundation
 10 |
 11 | class SegmentsUpdateWorker: UpdateWorker<MembershipsUpdateNotification> {
    |       `- note: class 'SegmentsUpdateWorker' does not conform to the 'Sendable' protocol
 12 |
 13 |     private let synchronizer: SegmentsSynchronizerWrapper
    :
 35 |     override func process(notification: MembershipsUpdateNotification) throws {
 36 |         processQueue.async {
 37 |             self.process(notification)
    |             `- warning: capture of 'self' with non-sendable type 'SegmentsUpdateWorker' in a '@Sendable' closure
 38 |         }
 39 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SyncUpdateWorker.swift:61:30: warning: capture of 'self' with non-sendable type 'SplitsUpdateWorker?' in a '@Sendable' closure
 25 | }
 26 |
 27 | class SplitsUpdateWorker: UpdateWorker<TargetingRuleUpdateNotification> {
    |       `- note: class 'SplitsUpdateWorker' does not conform to the 'Sendable' protocol
 28 |
 29 |     private let synchronizer: Synchronizer
    :
 59 |         processQueue.async { [weak self] in
 60 |
 61 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'SplitsUpdateWorker?' in a '@Sendable' closure
 62 |             let storedChangeNumber = getChangeNumber(notification.type)
 63 |             if storedChangeNumber >= notification.changeNumber {
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SyncUpdateWorker.swift:220:13: warning: capture of 'self' with non-sendable type 'SplitKillWorker' in a '@Sendable' closure
205 | }
206 |
207 | class SplitKillWorker: UpdateWorker<SplitKillNotification> {
    |       `- note: class 'SplitKillWorker' does not conform to the 'Sendable' protocol
208 |
209 |     private let synchronizer: Synchronizer
    :
218 |     override func process(notification: SplitKillNotification) throws {
219 |         processQueue.async {
220 |             self.process(notification)
    |             `- warning: capture of 'self' with non-sendable type 'SplitKillWorker' in a '@Sendable' closure
221 |         }
222 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/FeatureFlagsSynchronizer.swift:85:30: warning: capture of 'self' with non-sendable type 'DefaultFeatureFlagsSynchronizer?' in a '@Sendable' closure
 22 | }
 23 |
 24 | class DefaultFeatureFlagsSynchronizer: FeatureFlagsSynchronizer {
    |       `- note: class 'DefaultFeatureFlagsSynchronizer' does not conform to the 'Sendable' protocol
 25 |
 26 |     private var storageContainer: SplitStorageContainer
    :
 83 |
 84 |         DispatchQueue.general.async { [weak self] in
 85 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultFeatureFlagsSynchronizer?' in a '@Sendable' closure
 86 |
 87 |             let start = Date.nowMillis()
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/FeatureFlagsSynchronizer.swift:94:17: warning: capture of 'splitsStorage' with non-sendable type 'any SplitsStorage' in a '@Sendable' closure
 92 |             if shouldForceParse() {
 93 |                 Logger.v("Force Parsing flags")
 94 |                 splitsStorage.forceParsing()
    |                 `- warning: capture of 'splitsStorage' with non-sendable type 'any SplitsStorage' in a '@Sendable' closure
 95 |                 ruleBasedSegmentsStorage.forceParsing()
 96 |                 TimeChecker.logInterval("Time for Force Parsing", startTime: start)
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsStorage.swift:15:10: note: protocol 'SplitsStorage' does not conform to the 'Sendable' protocol
 13 | }
 14 |
 15 | protocol SplitsStorage: SyncSplitsStorage {
    |          `- note: protocol 'SplitsStorage' does not conform to the 'Sendable' protocol
 16 |     var changeNumber: Int64 { get }
 17 |     var updateTimestamp: Int64 { get }
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/FeatureFlagsSynchronizer.swift:95:17: warning: capture of 'ruleBasedSegmentsStorage' with non-sendable type 'any RuleBasedSegmentsStorage' in a '@Sendable' closure
 93 |                 Logger.v("Force Parsing flags")
 94 |                 splitsStorage.forceParsing()
 95 |                 ruleBasedSegmentsStorage.forceParsing()
    |                 `- warning: capture of 'ruleBasedSegmentsStorage' with non-sendable type 'any RuleBasedSegmentsStorage' in a '@Sendable' closure
 96 |                 TimeChecker.logInterval("Time for Force Parsing", startTime: start)
 97 |             }
/Users/admin/builder/spi-builder-workspace/Split/Storage/RuleBasedSegments/RuleBasedSegmentsStorage.swift:11:10: note: protocol 'RuleBasedSegmentsStorage' does not conform to the 'Sendable' protocol
  9 | import Foundation
 10 |
 11 | protocol RuleBasedSegmentsStorage: RolloutDefinitionsCache {
    |          `- note: protocol 'RuleBasedSegmentsStorage' does not conform to the 'Sendable' protocol
 12 |     var changeNumber: Int64 { get }
 13 |
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/MySegmentsSynchronizer.swift:82:30: warning: capture of 'self' with non-sendable type 'DefaultMySegmentsSynchronizer?' in a '@Sendable' closure
 21 |
 22 | // One instance per client
 23 | class DefaultMySegmentsSynchronizer: MySegmentsSynchronizer {
    |       `- note: class 'DefaultMySegmentsSynchronizer' does not conform to the 'Sendable' protocol
 24 |
 25 |     private let mySegmentsStorage: ByKeyMySegmentsStorage
    :
 80 |         }
 81 |         DispatchQueue.general.async { [weak self] in
 82 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultMySegmentsSynchronizer?' in a '@Sendable' closure
 83 |             self.mySegmentsStorage.loadLocal()
 84 |             self.eventsManager.notifyInternalEvent(.mySegmentsLoadedFromCache)
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/Synchronizer.swift:197:30: warning: capture of 'self' with non-sendable type 'DefaultSynchronizer?' in a '@Sendable' closure
 45 | }
 46 |
 47 | class DefaultSynchronizer: Synchronizer {
    |       `- note: class 'DefaultSynchronizer' does not conform to the 'Sendable' protocol
 48 |
 49 |     private let splitConfig: SplitClientConfig
    :
195 |     func pushEvent(event: EventDTO) {
196 |         flushQueue.async { [weak self] in
197 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultSynchronizer?' in a '@Sendable' closure
198 |             self.eventsSynchronizer.push(event)
199 |         }
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/Synchronizer.swift:198:42: warning: capture of 'event' with non-sendable type 'EventDTO' in a '@Sendable' closure
196 |         flushQueue.async { [weak self] in
197 |             guard let self = self else { return }
198 |             self.eventsSynchronizer.push(event)
    |                                          `- warning: capture of 'event' with non-sendable type 'EventDTO' in a '@Sendable' closure
199 |         }
200 |     }
/Users/admin/builder/spi-builder-workspace/Split/Track/Models/EventDTO.swift:11:7: note: class 'EventDTO' does not conform to the 'Sendable' protocol
 9 |
10 | // TODO: Rename to Event
11 | class EventDTO: DynamicCodable {
   |       `- note: class 'EventDTO' does not conform to the 'Sendable' protocol
12 |     var storageId: String?
13 |     var key: String?
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/Synchronizer.swift:204:30: warning: capture of 'self' with non-sendable type 'DefaultSynchronizer?' in a '@Sendable' closure
 45 | }
 46 |
 47 | class DefaultSynchronizer: Synchronizer {
    |       `- note: class 'DefaultSynchronizer' does not conform to the 'Sendable' protocol
 48 |
 49 |     private let splitConfig: SplitClientConfig
    :
202 |     func pushImpression(impression: DecoratedImpression) {
203 |         flushQueue.async { [weak self] in
204 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultSynchronizer?' in a '@Sendable' closure
205 |
206 |             self.impressionsTracker.push(impression)
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/Synchronizer.swift:245:30: warning: capture of 'self' with non-sendable type 'DefaultSynchronizer?' in a '@Sendable' closure
 45 | }
 46 |
 47 | class DefaultSynchronizer: Synchronizer {
    |       `- note: class 'DefaultSynchronizer' does not conform to the 'Sendable' protocol
 48 |
 49 |     private let splitConfig: SplitClientConfig
    :
243 |     func flush() {
244 |         flushQueue.async {  [weak self] in
245 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultSynchronizer?' in a '@Sendable' closure
246 |
247 |             self.impressionsTracker.flush()
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/TelemetrySynchronizer.swift:37:13: warning: capture of 'self' with non-sendable type 'DefaultTelemetrySynchronizer' in a '@Sendable' closure
18 | }
19 |
20 | class DefaultTelemetrySynchronizer: TelemetrySynchronizer {
   |       `- note: class 'DefaultTelemetrySynchronizer' does not conform to the 'Sendable' protocol
21 |
22 |     private let configRecorderWorker: RecorderWorker
   :
35 |     func synchronizeConfig() {
36 |         syncQueue.async {
37 |             self.configRecorderWorker.flush()
   |             `- warning: capture of 'self' with non-sendable type 'DefaultTelemetrySynchronizer' in a '@Sendable' closure
38 |         }
39 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/TelemetrySynchronizer.swift:43:13: warning: capture of 'self' with non-sendable type 'DefaultTelemetrySynchronizer' in a '@Sendable' closure
18 | }
19 |
20 | class DefaultTelemetrySynchronizer: TelemetrySynchronizer {
   |       `- note: class 'DefaultTelemetrySynchronizer' does not conform to the 'Sendable' protocol
21 |
22 |     private let configRecorderWorker: RecorderWorker
   :
41 |     func synchronizeStats() {
42 |         syncQueue.async {
43 |             self.statsRecorderWorker.flush()
   |             `- warning: capture of 'self' with non-sendable type 'DefaultTelemetrySynchronizer' in a '@Sendable' closure
44 |         }
45 |     }
/Users/admin/builder/spi-builder-workspace/Split/Secure/SecureDataStore.swift:18:16: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'SecureDataStore' may have shared mutable state; this is an error in the Swift 6 language mode
  8 | import Foundation
  9 |
 10 | class SecureDataStore {
    |       `- note: class 'SecureDataStore' does not conform to the 'Sendable' protocol
 11 |
 12 |     enum Asset: String {
    :
 16 |     private var token: String?
 17 |
 18 |     static let shared: SecureDataStore = {
    |                |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'SecureDataStore' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 19 |         let instance = SecureDataStore()
 20 |
[334/361] Compiling Split Synchronizer.swift
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SseClient.swift:54:30: warning: capture of 'self' with non-sendable type 'DefaultSseClient?' in a '@Sendable' closure
 23 | }
 24 |
 25 | class DefaultSseClient: SseClient {
    |       `- note: class 'DefaultSseClient' does not conform to the 'Sendable' protocol
 26 |
 27 |     ///
    :
 52 |     func connect(token: String, channels: [String], completion: @escaping CompletionHandler) {
 53 |         queue.async(flags: .barrier) { [weak self] in
 54 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultSseClient?' in a '@Sendable' closure
 55 |             let parameters: [String: Any] = [
 56 |                 SseClientConstants.pushNotificationTokenParam: token,
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SseClient.swift:65:80: warning: capture of 'completion' with non-sendable type 'DefaultSseClient.CompletionHandler' (aka '(Bool) -> ()') in a '@Sendable' closure
 63 |                     parameters: HttpParameters(values: parameters),
 64 |                     headers: self.endpoint.headers)
 65 |                 .getResponse(responseHandler: self.responseHandler(completion: completion),
    |                                                                                |- warning: capture of 'completion' with non-sendable type 'DefaultSseClient.CompletionHandler' (aka '(Bool) -> ()') in a '@Sendable' closure
    |                                                                                `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 66 |                              incomingDataHandler: self.incommingDataHandler(completion: completion),
 67 |                              closeHandler: self.closeHandler(),
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SseConnectionHandler.swift:37:30: warning: capture of 'self' with non-sendable type 'SseConnectionHandler?' in a '@Sendable' closure
 9 | import Foundation
10 |
11 | class SseConnectionHandler {
   |       `- note: class 'SseConnectionHandler' does not conform to the 'Sendable' protocol
12 |     private let clientLock = NSLock()
13 |     private let sseClientFactory: SseClientFactory
   :
35 |         clearClientId()
36 |         DispatchQueue.general.async { [weak self] in
37 |             guard let self = self else { return }
   |                              `- warning: capture of 'self' with non-sendable type 'SseConnectionHandler?' in a '@Sendable' closure
38 |             guard let clientId = disconnectingClientId else { return }
39 |             let cli = self.getSseClient(id: clientId)
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SyncEventBroadcaster.swift:43:30: warning: capture of 'self' with non-sendable type 'DefaultSyncEventBroadcaster?' in a '@Sendable' closure
33 | /// to other components
34 | ///
35 | class DefaultSyncEventBroadcaster: SyncEventBroadcaster {
   |       `- note: class 'DefaultSyncEventBroadcaster' does not conform to the 'Sendable' protocol
36 |     let messageQueue = DispatchQueue(label: "split-sync-event-broadcaster",
37 |                                      attributes: .concurrent)
   :
41 |     func push(event: SyncStatusEvent) {
42 |         messageQueue.async { [weak self] in
43 |             guard let self = self else { return }
   |                              `- warning: capture of 'self' with non-sendable type 'DefaultSyncEventBroadcaster?' in a '@Sendable' closure
44 |             for handler in self.handlers {
45 |                 handler(event)
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SyncEventBroadcaster.swift:52:30: warning: capture of 'self' with non-sendable type 'DefaultSyncEventBroadcaster?' in a '@Sendable' closure
33 | /// to other components
34 | ///
35 | class DefaultSyncEventBroadcaster: SyncEventBroadcaster {
   |       `- note: class 'DefaultSyncEventBroadcaster' does not conform to the 'Sendable' protocol
36 |     let messageQueue = DispatchQueue(label: "split-sync-event-broadcaster",
37 |                                      attributes: .concurrent)
   :
50 |     func register(handler: @escaping IncomingMessageHandler) {
51 |         messageQueue.async(flags: .barrier) { [weak self] in
52 |             guard let self = self else { return }
   |                              `- warning: capture of 'self' with non-sendable type 'DefaultSyncEventBroadcaster?' in a '@Sendable' closure
53 |             self.handlers.append(handler)
54 |         }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SyncEventBroadcaster.swift:53:34: warning: capture of 'handler' with non-sendable type 'DefaultSyncEventBroadcaster.IncomingMessageHandler' (aka '(SyncStatusEvent) -> ()') in a '@Sendable' closure
51 |         messageQueue.async(flags: .barrier) { [weak self] in
52 |             guard let self = self else { return }
53 |             self.handlers.append(handler)
   |                                  |- warning: capture of 'handler' with non-sendable type 'DefaultSyncEventBroadcaster.IncomingMessageHandler' (aka '(SyncStatusEvent) -> ()') in a '@Sendable' closure
   |                                  `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
54 |         }
55 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SyncEventBroadcaster.swift:59:30: warning: capture of 'self' with non-sendable type 'DefaultSyncEventBroadcaster?' in a '@Sendable' closure
33 | /// to other components
34 | ///
35 | class DefaultSyncEventBroadcaster: SyncEventBroadcaster {
   |       `- note: class 'DefaultSyncEventBroadcaster' does not conform to the 'Sendable' protocol
36 |     let messageQueue = DispatchQueue(label: "split-sync-event-broadcaster",
37 |                                      attributes: .concurrent)
   :
57 |     func destroy() {
58 |         messageQueue.async(flags: .barrier) { [weak self] in
59 |             guard let self = self else { return }
   |                              `- warning: capture of 'self' with non-sendable type 'DefaultSyncEventBroadcaster?' in a '@Sendable' closure
60 |             self.handlers.removeAll()
61 |         }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SyncSegmentsUpdateWorker.swift:37:13: warning: capture of 'self' with non-sendable type 'SegmentsUpdateWorker' in a '@Sendable' closure
  9 | import Foundation
 10 |
 11 | class SegmentsUpdateWorker: UpdateWorker<MembershipsUpdateNotification> {
    |       `- note: class 'SegmentsUpdateWorker' does not conform to the 'Sendable' protocol
 12 |
 13 |     private let synchronizer: SegmentsSynchronizerWrapper
    :
 35 |     override func process(notification: MembershipsUpdateNotification) throws {
 36 |         processQueue.async {
 37 |             self.process(notification)
    |             `- warning: capture of 'self' with non-sendable type 'SegmentsUpdateWorker' in a '@Sendable' closure
 38 |         }
 39 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SyncUpdateWorker.swift:61:30: warning: capture of 'self' with non-sendable type 'SplitsUpdateWorker?' in a '@Sendable' closure
 25 | }
 26 |
 27 | class SplitsUpdateWorker: UpdateWorker<TargetingRuleUpdateNotification> {
    |       `- note: class 'SplitsUpdateWorker' does not conform to the 'Sendable' protocol
 28 |
 29 |     private let synchronizer: Synchronizer
    :
 59 |         processQueue.async { [weak self] in
 60 |
 61 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'SplitsUpdateWorker?' in a '@Sendable' closure
 62 |             let storedChangeNumber = getChangeNumber(notification.type)
 63 |             if storedChangeNumber >= notification.changeNumber {
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SyncUpdateWorker.swift:220:13: warning: capture of 'self' with non-sendable type 'SplitKillWorker' in a '@Sendable' closure
205 | }
206 |
207 | class SplitKillWorker: UpdateWorker<SplitKillNotification> {
    |       `- note: class 'SplitKillWorker' does not conform to the 'Sendable' protocol
208 |
209 |     private let synchronizer: Synchronizer
    :
218 |     override func process(notification: SplitKillNotification) throws {
219 |         processQueue.async {
220 |             self.process(notification)
    |             `- warning: capture of 'self' with non-sendable type 'SplitKillWorker' in a '@Sendable' closure
221 |         }
222 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/FeatureFlagsSynchronizer.swift:85:30: warning: capture of 'self' with non-sendable type 'DefaultFeatureFlagsSynchronizer?' in a '@Sendable' closure
 22 | }
 23 |
 24 | class DefaultFeatureFlagsSynchronizer: FeatureFlagsSynchronizer {
    |       `- note: class 'DefaultFeatureFlagsSynchronizer' does not conform to the 'Sendable' protocol
 25 |
 26 |     private var storageContainer: SplitStorageContainer
    :
 83 |
 84 |         DispatchQueue.general.async { [weak self] in
 85 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultFeatureFlagsSynchronizer?' in a '@Sendable' closure
 86 |
 87 |             let start = Date.nowMillis()
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/FeatureFlagsSynchronizer.swift:94:17: warning: capture of 'splitsStorage' with non-sendable type 'any SplitsStorage' in a '@Sendable' closure
 92 |             if shouldForceParse() {
 93 |                 Logger.v("Force Parsing flags")
 94 |                 splitsStorage.forceParsing()
    |                 `- warning: capture of 'splitsStorage' with non-sendable type 'any SplitsStorage' in a '@Sendable' closure
 95 |                 ruleBasedSegmentsStorage.forceParsing()
 96 |                 TimeChecker.logInterval("Time for Force Parsing", startTime: start)
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsStorage.swift:15:10: note: protocol 'SplitsStorage' does not conform to the 'Sendable' protocol
 13 | }
 14 |
 15 | protocol SplitsStorage: SyncSplitsStorage {
    |          `- note: protocol 'SplitsStorage' does not conform to the 'Sendable' protocol
 16 |     var changeNumber: Int64 { get }
 17 |     var updateTimestamp: Int64 { get }
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/FeatureFlagsSynchronizer.swift:95:17: warning: capture of 'ruleBasedSegmentsStorage' with non-sendable type 'any RuleBasedSegmentsStorage' in a '@Sendable' closure
 93 |                 Logger.v("Force Parsing flags")
 94 |                 splitsStorage.forceParsing()
 95 |                 ruleBasedSegmentsStorage.forceParsing()
    |                 `- warning: capture of 'ruleBasedSegmentsStorage' with non-sendable type 'any RuleBasedSegmentsStorage' in a '@Sendable' closure
 96 |                 TimeChecker.logInterval("Time for Force Parsing", startTime: start)
 97 |             }
/Users/admin/builder/spi-builder-workspace/Split/Storage/RuleBasedSegments/RuleBasedSegmentsStorage.swift:11:10: note: protocol 'RuleBasedSegmentsStorage' does not conform to the 'Sendable' protocol
  9 | import Foundation
 10 |
 11 | protocol RuleBasedSegmentsStorage: RolloutDefinitionsCache {
    |          `- note: protocol 'RuleBasedSegmentsStorage' does not conform to the 'Sendable' protocol
 12 |     var changeNumber: Int64 { get }
 13 |
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/MySegmentsSynchronizer.swift:82:30: warning: capture of 'self' with non-sendable type 'DefaultMySegmentsSynchronizer?' in a '@Sendable' closure
 21 |
 22 | // One instance per client
 23 | class DefaultMySegmentsSynchronizer: MySegmentsSynchronizer {
    |       `- note: class 'DefaultMySegmentsSynchronizer' does not conform to the 'Sendable' protocol
 24 |
 25 |     private let mySegmentsStorage: ByKeyMySegmentsStorage
    :
 80 |         }
 81 |         DispatchQueue.general.async { [weak self] in
 82 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultMySegmentsSynchronizer?' in a '@Sendable' closure
 83 |             self.mySegmentsStorage.loadLocal()
 84 |             self.eventsManager.notifyInternalEvent(.mySegmentsLoadedFromCache)
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/Synchronizer.swift:197:30: warning: capture of 'self' with non-sendable type 'DefaultSynchronizer?' in a '@Sendable' closure
 45 | }
 46 |
 47 | class DefaultSynchronizer: Synchronizer {
    |       `- note: class 'DefaultSynchronizer' does not conform to the 'Sendable' protocol
 48 |
 49 |     private let splitConfig: SplitClientConfig
    :
195 |     func pushEvent(event: EventDTO) {
196 |         flushQueue.async { [weak self] in
197 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultSynchronizer?' in a '@Sendable' closure
198 |             self.eventsSynchronizer.push(event)
199 |         }
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/Synchronizer.swift:198:42: warning: capture of 'event' with non-sendable type 'EventDTO' in a '@Sendable' closure
196 |         flushQueue.async { [weak self] in
197 |             guard let self = self else { return }
198 |             self.eventsSynchronizer.push(event)
    |                                          `- warning: capture of 'event' with non-sendable type 'EventDTO' in a '@Sendable' closure
199 |         }
200 |     }
/Users/admin/builder/spi-builder-workspace/Split/Track/Models/EventDTO.swift:11:7: note: class 'EventDTO' does not conform to the 'Sendable' protocol
 9 |
10 | // TODO: Rename to Event
11 | class EventDTO: DynamicCodable {
   |       `- note: class 'EventDTO' does not conform to the 'Sendable' protocol
12 |     var storageId: String?
13 |     var key: String?
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/Synchronizer.swift:204:30: warning: capture of 'self' with non-sendable type 'DefaultSynchronizer?' in a '@Sendable' closure
 45 | }
 46 |
 47 | class DefaultSynchronizer: Synchronizer {
    |       `- note: class 'DefaultSynchronizer' does not conform to the 'Sendable' protocol
 48 |
 49 |     private let splitConfig: SplitClientConfig
    :
202 |     func pushImpression(impression: DecoratedImpression) {
203 |         flushQueue.async { [weak self] in
204 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultSynchronizer?' in a '@Sendable' closure
205 |
206 |             self.impressionsTracker.push(impression)
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/Synchronizer.swift:245:30: warning: capture of 'self' with non-sendable type 'DefaultSynchronizer?' in a '@Sendable' closure
 45 | }
 46 |
 47 | class DefaultSynchronizer: Synchronizer {
    |       `- note: class 'DefaultSynchronizer' does not conform to the 'Sendable' protocol
 48 |
 49 |     private let splitConfig: SplitClientConfig
    :
243 |     func flush() {
244 |         flushQueue.async {  [weak self] in
245 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultSynchronizer?' in a '@Sendable' closure
246 |
247 |             self.impressionsTracker.flush()
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/TelemetrySynchronizer.swift:37:13: warning: capture of 'self' with non-sendable type 'DefaultTelemetrySynchronizer' in a '@Sendable' closure
18 | }
19 |
20 | class DefaultTelemetrySynchronizer: TelemetrySynchronizer {
   |       `- note: class 'DefaultTelemetrySynchronizer' does not conform to the 'Sendable' protocol
21 |
22 |     private let configRecorderWorker: RecorderWorker
   :
35 |     func synchronizeConfig() {
36 |         syncQueue.async {
37 |             self.configRecorderWorker.flush()
   |             `- warning: capture of 'self' with non-sendable type 'DefaultTelemetrySynchronizer' in a '@Sendable' closure
38 |         }
39 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/TelemetrySynchronizer.swift:43:13: warning: capture of 'self' with non-sendable type 'DefaultTelemetrySynchronizer' in a '@Sendable' closure
18 | }
19 |
20 | class DefaultTelemetrySynchronizer: TelemetrySynchronizer {
   |       `- note: class 'DefaultTelemetrySynchronizer' does not conform to the 'Sendable' protocol
21 |
22 |     private let configRecorderWorker: RecorderWorker
   :
41 |     func synchronizeStats() {
42 |         syncQueue.async {
43 |             self.statsRecorderWorker.flush()
   |             `- warning: capture of 'self' with non-sendable type 'DefaultTelemetrySynchronizer' in a '@Sendable' closure
44 |         }
45 |     }
/Users/admin/builder/spi-builder-workspace/Split/Secure/SecureDataStore.swift:18:16: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'SecureDataStore' may have shared mutable state; this is an error in the Swift 6 language mode
  8 | import Foundation
  9 |
 10 | class SecureDataStore {
    |       `- note: class 'SecureDataStore' does not conform to the 'Sendable' protocol
 11 |
 12 |     enum Asset: String {
    :
 16 |     private var token: String?
 17 |
 18 |     static let shared: SecureDataStore = {
    |                |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'SecureDataStore' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 19 |         let instance = SecureDataStore()
 20 |
[335/361] Compiling Split TelemetrySynchronizer.swift
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SseClient.swift:54:30: warning: capture of 'self' with non-sendable type 'DefaultSseClient?' in a '@Sendable' closure
 23 | }
 24 |
 25 | class DefaultSseClient: SseClient {
    |       `- note: class 'DefaultSseClient' does not conform to the 'Sendable' protocol
 26 |
 27 |     ///
    :
 52 |     func connect(token: String, channels: [String], completion: @escaping CompletionHandler) {
 53 |         queue.async(flags: .barrier) { [weak self] in
 54 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultSseClient?' in a '@Sendable' closure
 55 |             let parameters: [String: Any] = [
 56 |                 SseClientConstants.pushNotificationTokenParam: token,
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SseClient.swift:65:80: warning: capture of 'completion' with non-sendable type 'DefaultSseClient.CompletionHandler' (aka '(Bool) -> ()') in a '@Sendable' closure
 63 |                     parameters: HttpParameters(values: parameters),
 64 |                     headers: self.endpoint.headers)
 65 |                 .getResponse(responseHandler: self.responseHandler(completion: completion),
    |                                                                                |- warning: capture of 'completion' with non-sendable type 'DefaultSseClient.CompletionHandler' (aka '(Bool) -> ()') in a '@Sendable' closure
    |                                                                                `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 66 |                              incomingDataHandler: self.incommingDataHandler(completion: completion),
 67 |                              closeHandler: self.closeHandler(),
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SseConnectionHandler.swift:37:30: warning: capture of 'self' with non-sendable type 'SseConnectionHandler?' in a '@Sendable' closure
 9 | import Foundation
10 |
11 | class SseConnectionHandler {
   |       `- note: class 'SseConnectionHandler' does not conform to the 'Sendable' protocol
12 |     private let clientLock = NSLock()
13 |     private let sseClientFactory: SseClientFactory
   :
35 |         clearClientId()
36 |         DispatchQueue.general.async { [weak self] in
37 |             guard let self = self else { return }
   |                              `- warning: capture of 'self' with non-sendable type 'SseConnectionHandler?' in a '@Sendable' closure
38 |             guard let clientId = disconnectingClientId else { return }
39 |             let cli = self.getSseClient(id: clientId)
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SyncEventBroadcaster.swift:43:30: warning: capture of 'self' with non-sendable type 'DefaultSyncEventBroadcaster?' in a '@Sendable' closure
33 | /// to other components
34 | ///
35 | class DefaultSyncEventBroadcaster: SyncEventBroadcaster {
   |       `- note: class 'DefaultSyncEventBroadcaster' does not conform to the 'Sendable' protocol
36 |     let messageQueue = DispatchQueue(label: "split-sync-event-broadcaster",
37 |                                      attributes: .concurrent)
   :
41 |     func push(event: SyncStatusEvent) {
42 |         messageQueue.async { [weak self] in
43 |             guard let self = self else { return }
   |                              `- warning: capture of 'self' with non-sendable type 'DefaultSyncEventBroadcaster?' in a '@Sendable' closure
44 |             for handler in self.handlers {
45 |                 handler(event)
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SyncEventBroadcaster.swift:52:30: warning: capture of 'self' with non-sendable type 'DefaultSyncEventBroadcaster?' in a '@Sendable' closure
33 | /// to other components
34 | ///
35 | class DefaultSyncEventBroadcaster: SyncEventBroadcaster {
   |       `- note: class 'DefaultSyncEventBroadcaster' does not conform to the 'Sendable' protocol
36 |     let messageQueue = DispatchQueue(label: "split-sync-event-broadcaster",
37 |                                      attributes: .concurrent)
   :
50 |     func register(handler: @escaping IncomingMessageHandler) {
51 |         messageQueue.async(flags: .barrier) { [weak self] in
52 |             guard let self = self else { return }
   |                              `- warning: capture of 'self' with non-sendable type 'DefaultSyncEventBroadcaster?' in a '@Sendable' closure
53 |             self.handlers.append(handler)
54 |         }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SyncEventBroadcaster.swift:53:34: warning: capture of 'handler' with non-sendable type 'DefaultSyncEventBroadcaster.IncomingMessageHandler' (aka '(SyncStatusEvent) -> ()') in a '@Sendable' closure
51 |         messageQueue.async(flags: .barrier) { [weak self] in
52 |             guard let self = self else { return }
53 |             self.handlers.append(handler)
   |                                  |- warning: capture of 'handler' with non-sendable type 'DefaultSyncEventBroadcaster.IncomingMessageHandler' (aka '(SyncStatusEvent) -> ()') in a '@Sendable' closure
   |                                  `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
54 |         }
55 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SyncEventBroadcaster.swift:59:30: warning: capture of 'self' with non-sendable type 'DefaultSyncEventBroadcaster?' in a '@Sendable' closure
33 | /// to other components
34 | ///
35 | class DefaultSyncEventBroadcaster: SyncEventBroadcaster {
   |       `- note: class 'DefaultSyncEventBroadcaster' does not conform to the 'Sendable' protocol
36 |     let messageQueue = DispatchQueue(label: "split-sync-event-broadcaster",
37 |                                      attributes: .concurrent)
   :
57 |     func destroy() {
58 |         messageQueue.async(flags: .barrier) { [weak self] in
59 |             guard let self = self else { return }
   |                              `- warning: capture of 'self' with non-sendable type 'DefaultSyncEventBroadcaster?' in a '@Sendable' closure
60 |             self.handlers.removeAll()
61 |         }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SyncSegmentsUpdateWorker.swift:37:13: warning: capture of 'self' with non-sendable type 'SegmentsUpdateWorker' in a '@Sendable' closure
  9 | import Foundation
 10 |
 11 | class SegmentsUpdateWorker: UpdateWorker<MembershipsUpdateNotification> {
    |       `- note: class 'SegmentsUpdateWorker' does not conform to the 'Sendable' protocol
 12 |
 13 |     private let synchronizer: SegmentsSynchronizerWrapper
    :
 35 |     override func process(notification: MembershipsUpdateNotification) throws {
 36 |         processQueue.async {
 37 |             self.process(notification)
    |             `- warning: capture of 'self' with non-sendable type 'SegmentsUpdateWorker' in a '@Sendable' closure
 38 |         }
 39 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SyncUpdateWorker.swift:61:30: warning: capture of 'self' with non-sendable type 'SplitsUpdateWorker?' in a '@Sendable' closure
 25 | }
 26 |
 27 | class SplitsUpdateWorker: UpdateWorker<TargetingRuleUpdateNotification> {
    |       `- note: class 'SplitsUpdateWorker' does not conform to the 'Sendable' protocol
 28 |
 29 |     private let synchronizer: Synchronizer
    :
 59 |         processQueue.async { [weak self] in
 60 |
 61 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'SplitsUpdateWorker?' in a '@Sendable' closure
 62 |             let storedChangeNumber = getChangeNumber(notification.type)
 63 |             if storedChangeNumber >= notification.changeNumber {
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SyncUpdateWorker.swift:220:13: warning: capture of 'self' with non-sendable type 'SplitKillWorker' in a '@Sendable' closure
205 | }
206 |
207 | class SplitKillWorker: UpdateWorker<SplitKillNotification> {
    |       `- note: class 'SplitKillWorker' does not conform to the 'Sendable' protocol
208 |
209 |     private let synchronizer: Synchronizer
    :
218 |     override func process(notification: SplitKillNotification) throws {
219 |         processQueue.async {
220 |             self.process(notification)
    |             `- warning: capture of 'self' with non-sendable type 'SplitKillWorker' in a '@Sendable' closure
221 |         }
222 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/FeatureFlagsSynchronizer.swift:85:30: warning: capture of 'self' with non-sendable type 'DefaultFeatureFlagsSynchronizer?' in a '@Sendable' closure
 22 | }
 23 |
 24 | class DefaultFeatureFlagsSynchronizer: FeatureFlagsSynchronizer {
    |       `- note: class 'DefaultFeatureFlagsSynchronizer' does not conform to the 'Sendable' protocol
 25 |
 26 |     private var storageContainer: SplitStorageContainer
    :
 83 |
 84 |         DispatchQueue.general.async { [weak self] in
 85 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultFeatureFlagsSynchronizer?' in a '@Sendable' closure
 86 |
 87 |             let start = Date.nowMillis()
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/FeatureFlagsSynchronizer.swift:94:17: warning: capture of 'splitsStorage' with non-sendable type 'any SplitsStorage' in a '@Sendable' closure
 92 |             if shouldForceParse() {
 93 |                 Logger.v("Force Parsing flags")
 94 |                 splitsStorage.forceParsing()
    |                 `- warning: capture of 'splitsStorage' with non-sendable type 'any SplitsStorage' in a '@Sendable' closure
 95 |                 ruleBasedSegmentsStorage.forceParsing()
 96 |                 TimeChecker.logInterval("Time for Force Parsing", startTime: start)
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsStorage.swift:15:10: note: protocol 'SplitsStorage' does not conform to the 'Sendable' protocol
 13 | }
 14 |
 15 | protocol SplitsStorage: SyncSplitsStorage {
    |          `- note: protocol 'SplitsStorage' does not conform to the 'Sendable' protocol
 16 |     var changeNumber: Int64 { get }
 17 |     var updateTimestamp: Int64 { get }
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/FeatureFlagsSynchronizer.swift:95:17: warning: capture of 'ruleBasedSegmentsStorage' with non-sendable type 'any RuleBasedSegmentsStorage' in a '@Sendable' closure
 93 |                 Logger.v("Force Parsing flags")
 94 |                 splitsStorage.forceParsing()
 95 |                 ruleBasedSegmentsStorage.forceParsing()
    |                 `- warning: capture of 'ruleBasedSegmentsStorage' with non-sendable type 'any RuleBasedSegmentsStorage' in a '@Sendable' closure
 96 |                 TimeChecker.logInterval("Time for Force Parsing", startTime: start)
 97 |             }
/Users/admin/builder/spi-builder-workspace/Split/Storage/RuleBasedSegments/RuleBasedSegmentsStorage.swift:11:10: note: protocol 'RuleBasedSegmentsStorage' does not conform to the 'Sendable' protocol
  9 | import Foundation
 10 |
 11 | protocol RuleBasedSegmentsStorage: RolloutDefinitionsCache {
    |          `- note: protocol 'RuleBasedSegmentsStorage' does not conform to the 'Sendable' protocol
 12 |     var changeNumber: Int64 { get }
 13 |
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/MySegmentsSynchronizer.swift:82:30: warning: capture of 'self' with non-sendable type 'DefaultMySegmentsSynchronizer?' in a '@Sendable' closure
 21 |
 22 | // One instance per client
 23 | class DefaultMySegmentsSynchronizer: MySegmentsSynchronizer {
    |       `- note: class 'DefaultMySegmentsSynchronizer' does not conform to the 'Sendable' protocol
 24 |
 25 |     private let mySegmentsStorage: ByKeyMySegmentsStorage
    :
 80 |         }
 81 |         DispatchQueue.general.async { [weak self] in
 82 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultMySegmentsSynchronizer?' in a '@Sendable' closure
 83 |             self.mySegmentsStorage.loadLocal()
 84 |             self.eventsManager.notifyInternalEvent(.mySegmentsLoadedFromCache)
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/Synchronizer.swift:197:30: warning: capture of 'self' with non-sendable type 'DefaultSynchronizer?' in a '@Sendable' closure
 45 | }
 46 |
 47 | class DefaultSynchronizer: Synchronizer {
    |       `- note: class 'DefaultSynchronizer' does not conform to the 'Sendable' protocol
 48 |
 49 |     private let splitConfig: SplitClientConfig
    :
195 |     func pushEvent(event: EventDTO) {
196 |         flushQueue.async { [weak self] in
197 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultSynchronizer?' in a '@Sendable' closure
198 |             self.eventsSynchronizer.push(event)
199 |         }
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/Synchronizer.swift:198:42: warning: capture of 'event' with non-sendable type 'EventDTO' in a '@Sendable' closure
196 |         flushQueue.async { [weak self] in
197 |             guard let self = self else { return }
198 |             self.eventsSynchronizer.push(event)
    |                                          `- warning: capture of 'event' with non-sendable type 'EventDTO' in a '@Sendable' closure
199 |         }
200 |     }
/Users/admin/builder/spi-builder-workspace/Split/Track/Models/EventDTO.swift:11:7: note: class 'EventDTO' does not conform to the 'Sendable' protocol
 9 |
10 | // TODO: Rename to Event
11 | class EventDTO: DynamicCodable {
   |       `- note: class 'EventDTO' does not conform to the 'Sendable' protocol
12 |     var storageId: String?
13 |     var key: String?
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/Synchronizer.swift:204:30: warning: capture of 'self' with non-sendable type 'DefaultSynchronizer?' in a '@Sendable' closure
 45 | }
 46 |
 47 | class DefaultSynchronizer: Synchronizer {
    |       `- note: class 'DefaultSynchronizer' does not conform to the 'Sendable' protocol
 48 |
 49 |     private let splitConfig: SplitClientConfig
    :
202 |     func pushImpression(impression: DecoratedImpression) {
203 |         flushQueue.async { [weak self] in
204 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultSynchronizer?' in a '@Sendable' closure
205 |
206 |             self.impressionsTracker.push(impression)
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/Synchronizer.swift:245:30: warning: capture of 'self' with non-sendable type 'DefaultSynchronizer?' in a '@Sendable' closure
 45 | }
 46 |
 47 | class DefaultSynchronizer: Synchronizer {
    |       `- note: class 'DefaultSynchronizer' does not conform to the 'Sendable' protocol
 48 |
 49 |     private let splitConfig: SplitClientConfig
    :
243 |     func flush() {
244 |         flushQueue.async {  [weak self] in
245 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultSynchronizer?' in a '@Sendable' closure
246 |
247 |             self.impressionsTracker.flush()
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/TelemetrySynchronizer.swift:37:13: warning: capture of 'self' with non-sendable type 'DefaultTelemetrySynchronizer' in a '@Sendable' closure
18 | }
19 |
20 | class DefaultTelemetrySynchronizer: TelemetrySynchronizer {
   |       `- note: class 'DefaultTelemetrySynchronizer' does not conform to the 'Sendable' protocol
21 |
22 |     private let configRecorderWorker: RecorderWorker
   :
35 |     func synchronizeConfig() {
36 |         syncQueue.async {
37 |             self.configRecorderWorker.flush()
   |             `- warning: capture of 'self' with non-sendable type 'DefaultTelemetrySynchronizer' in a '@Sendable' closure
38 |         }
39 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/TelemetrySynchronizer.swift:43:13: warning: capture of 'self' with non-sendable type 'DefaultTelemetrySynchronizer' in a '@Sendable' closure
18 | }
19 |
20 | class DefaultTelemetrySynchronizer: TelemetrySynchronizer {
   |       `- note: class 'DefaultTelemetrySynchronizer' does not conform to the 'Sendable' protocol
21 |
22 |     private let configRecorderWorker: RecorderWorker
   :
41 |     func synchronizeStats() {
42 |         syncQueue.async {
43 |             self.statsRecorderWorker.flush()
   |             `- warning: capture of 'self' with non-sendable type 'DefaultTelemetrySynchronizer' in a '@Sendable' closure
44 |         }
45 |     }
/Users/admin/builder/spi-builder-workspace/Split/Secure/SecureDataStore.swift:18:16: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'SecureDataStore' may have shared mutable state; this is an error in the Swift 6 language mode
  8 | import Foundation
  9 |
 10 | class SecureDataStore {
    |       `- note: class 'SecureDataStore' does not conform to the 'Sendable' protocol
 11 |
 12 |     enum Asset: String {
    :
 16 |     private var token: String?
 17 |
 18 |     static let shared: SecureDataStore = {
    |                |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'SecureDataStore' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 19 |         let instance = SecureDataStore()
 20 |
[336/361] Compiling Split UniqueKeyTracker.swift
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SseClient.swift:54:30: warning: capture of 'self' with non-sendable type 'DefaultSseClient?' in a '@Sendable' closure
 23 | }
 24 |
 25 | class DefaultSseClient: SseClient {
    |       `- note: class 'DefaultSseClient' does not conform to the 'Sendable' protocol
 26 |
 27 |     ///
    :
 52 |     func connect(token: String, channels: [String], completion: @escaping CompletionHandler) {
 53 |         queue.async(flags: .barrier) { [weak self] in
 54 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultSseClient?' in a '@Sendable' closure
 55 |             let parameters: [String: Any] = [
 56 |                 SseClientConstants.pushNotificationTokenParam: token,
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SseClient.swift:65:80: warning: capture of 'completion' with non-sendable type 'DefaultSseClient.CompletionHandler' (aka '(Bool) -> ()') in a '@Sendable' closure
 63 |                     parameters: HttpParameters(values: parameters),
 64 |                     headers: self.endpoint.headers)
 65 |                 .getResponse(responseHandler: self.responseHandler(completion: completion),
    |                                                                                |- warning: capture of 'completion' with non-sendable type 'DefaultSseClient.CompletionHandler' (aka '(Bool) -> ()') in a '@Sendable' closure
    |                                                                                `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 66 |                              incomingDataHandler: self.incommingDataHandler(completion: completion),
 67 |                              closeHandler: self.closeHandler(),
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SseConnectionHandler.swift:37:30: warning: capture of 'self' with non-sendable type 'SseConnectionHandler?' in a '@Sendable' closure
 9 | import Foundation
10 |
11 | class SseConnectionHandler {
   |       `- note: class 'SseConnectionHandler' does not conform to the 'Sendable' protocol
12 |     private let clientLock = NSLock()
13 |     private let sseClientFactory: SseClientFactory
   :
35 |         clearClientId()
36 |         DispatchQueue.general.async { [weak self] in
37 |             guard let self = self else { return }
   |                              `- warning: capture of 'self' with non-sendable type 'SseConnectionHandler?' in a '@Sendable' closure
38 |             guard let clientId = disconnectingClientId else { return }
39 |             let cli = self.getSseClient(id: clientId)
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SyncEventBroadcaster.swift:43:30: warning: capture of 'self' with non-sendable type 'DefaultSyncEventBroadcaster?' in a '@Sendable' closure
33 | /// to other components
34 | ///
35 | class DefaultSyncEventBroadcaster: SyncEventBroadcaster {
   |       `- note: class 'DefaultSyncEventBroadcaster' does not conform to the 'Sendable' protocol
36 |     let messageQueue = DispatchQueue(label: "split-sync-event-broadcaster",
37 |                                      attributes: .concurrent)
   :
41 |     func push(event: SyncStatusEvent) {
42 |         messageQueue.async { [weak self] in
43 |             guard let self = self else { return }
   |                              `- warning: capture of 'self' with non-sendable type 'DefaultSyncEventBroadcaster?' in a '@Sendable' closure
44 |             for handler in self.handlers {
45 |                 handler(event)
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SyncEventBroadcaster.swift:52:30: warning: capture of 'self' with non-sendable type 'DefaultSyncEventBroadcaster?' in a '@Sendable' closure
33 | /// to other components
34 | ///
35 | class DefaultSyncEventBroadcaster: SyncEventBroadcaster {
   |       `- note: class 'DefaultSyncEventBroadcaster' does not conform to the 'Sendable' protocol
36 |     let messageQueue = DispatchQueue(label: "split-sync-event-broadcaster",
37 |                                      attributes: .concurrent)
   :
50 |     func register(handler: @escaping IncomingMessageHandler) {
51 |         messageQueue.async(flags: .barrier) { [weak self] in
52 |             guard let self = self else { return }
   |                              `- warning: capture of 'self' with non-sendable type 'DefaultSyncEventBroadcaster?' in a '@Sendable' closure
53 |             self.handlers.append(handler)
54 |         }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SyncEventBroadcaster.swift:53:34: warning: capture of 'handler' with non-sendable type 'DefaultSyncEventBroadcaster.IncomingMessageHandler' (aka '(SyncStatusEvent) -> ()') in a '@Sendable' closure
51 |         messageQueue.async(flags: .barrier) { [weak self] in
52 |             guard let self = self else { return }
53 |             self.handlers.append(handler)
   |                                  |- warning: capture of 'handler' with non-sendable type 'DefaultSyncEventBroadcaster.IncomingMessageHandler' (aka '(SyncStatusEvent) -> ()') in a '@Sendable' closure
   |                                  `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
54 |         }
55 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SyncEventBroadcaster.swift:59:30: warning: capture of 'self' with non-sendable type 'DefaultSyncEventBroadcaster?' in a '@Sendable' closure
33 | /// to other components
34 | ///
35 | class DefaultSyncEventBroadcaster: SyncEventBroadcaster {
   |       `- note: class 'DefaultSyncEventBroadcaster' does not conform to the 'Sendable' protocol
36 |     let messageQueue = DispatchQueue(label: "split-sync-event-broadcaster",
37 |                                      attributes: .concurrent)
   :
57 |     func destroy() {
58 |         messageQueue.async(flags: .barrier) { [weak self] in
59 |             guard let self = self else { return }
   |                              `- warning: capture of 'self' with non-sendable type 'DefaultSyncEventBroadcaster?' in a '@Sendable' closure
60 |             self.handlers.removeAll()
61 |         }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SyncSegmentsUpdateWorker.swift:37:13: warning: capture of 'self' with non-sendable type 'SegmentsUpdateWorker' in a '@Sendable' closure
  9 | import Foundation
 10 |
 11 | class SegmentsUpdateWorker: UpdateWorker<MembershipsUpdateNotification> {
    |       `- note: class 'SegmentsUpdateWorker' does not conform to the 'Sendable' protocol
 12 |
 13 |     private let synchronizer: SegmentsSynchronizerWrapper
    :
 35 |     override func process(notification: MembershipsUpdateNotification) throws {
 36 |         processQueue.async {
 37 |             self.process(notification)
    |             `- warning: capture of 'self' with non-sendable type 'SegmentsUpdateWorker' in a '@Sendable' closure
 38 |         }
 39 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SyncUpdateWorker.swift:61:30: warning: capture of 'self' with non-sendable type 'SplitsUpdateWorker?' in a '@Sendable' closure
 25 | }
 26 |
 27 | class SplitsUpdateWorker: UpdateWorker<TargetingRuleUpdateNotification> {
    |       `- note: class 'SplitsUpdateWorker' does not conform to the 'Sendable' protocol
 28 |
 29 |     private let synchronizer: Synchronizer
    :
 59 |         processQueue.async { [weak self] in
 60 |
 61 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'SplitsUpdateWorker?' in a '@Sendable' closure
 62 |             let storedChangeNumber = getChangeNumber(notification.type)
 63 |             if storedChangeNumber >= notification.changeNumber {
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SyncUpdateWorker.swift:220:13: warning: capture of 'self' with non-sendable type 'SplitKillWorker' in a '@Sendable' closure
205 | }
206 |
207 | class SplitKillWorker: UpdateWorker<SplitKillNotification> {
    |       `- note: class 'SplitKillWorker' does not conform to the 'Sendable' protocol
208 |
209 |     private let synchronizer: Synchronizer
    :
218 |     override func process(notification: SplitKillNotification) throws {
219 |         processQueue.async {
220 |             self.process(notification)
    |             `- warning: capture of 'self' with non-sendable type 'SplitKillWorker' in a '@Sendable' closure
221 |         }
222 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/FeatureFlagsSynchronizer.swift:85:30: warning: capture of 'self' with non-sendable type 'DefaultFeatureFlagsSynchronizer?' in a '@Sendable' closure
 22 | }
 23 |
 24 | class DefaultFeatureFlagsSynchronizer: FeatureFlagsSynchronizer {
    |       `- note: class 'DefaultFeatureFlagsSynchronizer' does not conform to the 'Sendable' protocol
 25 |
 26 |     private var storageContainer: SplitStorageContainer
    :
 83 |
 84 |         DispatchQueue.general.async { [weak self] in
 85 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultFeatureFlagsSynchronizer?' in a '@Sendable' closure
 86 |
 87 |             let start = Date.nowMillis()
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/FeatureFlagsSynchronizer.swift:94:17: warning: capture of 'splitsStorage' with non-sendable type 'any SplitsStorage' in a '@Sendable' closure
 92 |             if shouldForceParse() {
 93 |                 Logger.v("Force Parsing flags")
 94 |                 splitsStorage.forceParsing()
    |                 `- warning: capture of 'splitsStorage' with non-sendable type 'any SplitsStorage' in a '@Sendable' closure
 95 |                 ruleBasedSegmentsStorage.forceParsing()
 96 |                 TimeChecker.logInterval("Time for Force Parsing", startTime: start)
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsStorage.swift:15:10: note: protocol 'SplitsStorage' does not conform to the 'Sendable' protocol
 13 | }
 14 |
 15 | protocol SplitsStorage: SyncSplitsStorage {
    |          `- note: protocol 'SplitsStorage' does not conform to the 'Sendable' protocol
 16 |     var changeNumber: Int64 { get }
 17 |     var updateTimestamp: Int64 { get }
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/FeatureFlagsSynchronizer.swift:95:17: warning: capture of 'ruleBasedSegmentsStorage' with non-sendable type 'any RuleBasedSegmentsStorage' in a '@Sendable' closure
 93 |                 Logger.v("Force Parsing flags")
 94 |                 splitsStorage.forceParsing()
 95 |                 ruleBasedSegmentsStorage.forceParsing()
    |                 `- warning: capture of 'ruleBasedSegmentsStorage' with non-sendable type 'any RuleBasedSegmentsStorage' in a '@Sendable' closure
 96 |                 TimeChecker.logInterval("Time for Force Parsing", startTime: start)
 97 |             }
/Users/admin/builder/spi-builder-workspace/Split/Storage/RuleBasedSegments/RuleBasedSegmentsStorage.swift:11:10: note: protocol 'RuleBasedSegmentsStorage' does not conform to the 'Sendable' protocol
  9 | import Foundation
 10 |
 11 | protocol RuleBasedSegmentsStorage: RolloutDefinitionsCache {
    |          `- note: protocol 'RuleBasedSegmentsStorage' does not conform to the 'Sendable' protocol
 12 |     var changeNumber: Int64 { get }
 13 |
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/MySegmentsSynchronizer.swift:82:30: warning: capture of 'self' with non-sendable type 'DefaultMySegmentsSynchronizer?' in a '@Sendable' closure
 21 |
 22 | // One instance per client
 23 | class DefaultMySegmentsSynchronizer: MySegmentsSynchronizer {
    |       `- note: class 'DefaultMySegmentsSynchronizer' does not conform to the 'Sendable' protocol
 24 |
 25 |     private let mySegmentsStorage: ByKeyMySegmentsStorage
    :
 80 |         }
 81 |         DispatchQueue.general.async { [weak self] in
 82 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultMySegmentsSynchronizer?' in a '@Sendable' closure
 83 |             self.mySegmentsStorage.loadLocal()
 84 |             self.eventsManager.notifyInternalEvent(.mySegmentsLoadedFromCache)
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/Synchronizer.swift:197:30: warning: capture of 'self' with non-sendable type 'DefaultSynchronizer?' in a '@Sendable' closure
 45 | }
 46 |
 47 | class DefaultSynchronizer: Synchronizer {
    |       `- note: class 'DefaultSynchronizer' does not conform to the 'Sendable' protocol
 48 |
 49 |     private let splitConfig: SplitClientConfig
    :
195 |     func pushEvent(event: EventDTO) {
196 |         flushQueue.async { [weak self] in
197 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultSynchronizer?' in a '@Sendable' closure
198 |             self.eventsSynchronizer.push(event)
199 |         }
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/Synchronizer.swift:198:42: warning: capture of 'event' with non-sendable type 'EventDTO' in a '@Sendable' closure
196 |         flushQueue.async { [weak self] in
197 |             guard let self = self else { return }
198 |             self.eventsSynchronizer.push(event)
    |                                          `- warning: capture of 'event' with non-sendable type 'EventDTO' in a '@Sendable' closure
199 |         }
200 |     }
/Users/admin/builder/spi-builder-workspace/Split/Track/Models/EventDTO.swift:11:7: note: class 'EventDTO' does not conform to the 'Sendable' protocol
 9 |
10 | // TODO: Rename to Event
11 | class EventDTO: DynamicCodable {
   |       `- note: class 'EventDTO' does not conform to the 'Sendable' protocol
12 |     var storageId: String?
13 |     var key: String?
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/Synchronizer.swift:204:30: warning: capture of 'self' with non-sendable type 'DefaultSynchronizer?' in a '@Sendable' closure
 45 | }
 46 |
 47 | class DefaultSynchronizer: Synchronizer {
    |       `- note: class 'DefaultSynchronizer' does not conform to the 'Sendable' protocol
 48 |
 49 |     private let splitConfig: SplitClientConfig
    :
202 |     func pushImpression(impression: DecoratedImpression) {
203 |         flushQueue.async { [weak self] in
204 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultSynchronizer?' in a '@Sendable' closure
205 |
206 |             self.impressionsTracker.push(impression)
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/Synchronizer.swift:245:30: warning: capture of 'self' with non-sendable type 'DefaultSynchronizer?' in a '@Sendable' closure
 45 | }
 46 |
 47 | class DefaultSynchronizer: Synchronizer {
    |       `- note: class 'DefaultSynchronizer' does not conform to the 'Sendable' protocol
 48 |
 49 |     private let splitConfig: SplitClientConfig
    :
243 |     func flush() {
244 |         flushQueue.async {  [weak self] in
245 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultSynchronizer?' in a '@Sendable' closure
246 |
247 |             self.impressionsTracker.flush()
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/TelemetrySynchronizer.swift:37:13: warning: capture of 'self' with non-sendable type 'DefaultTelemetrySynchronizer' in a '@Sendable' closure
18 | }
19 |
20 | class DefaultTelemetrySynchronizer: TelemetrySynchronizer {
   |       `- note: class 'DefaultTelemetrySynchronizer' does not conform to the 'Sendable' protocol
21 |
22 |     private let configRecorderWorker: RecorderWorker
   :
35 |     func synchronizeConfig() {
36 |         syncQueue.async {
37 |             self.configRecorderWorker.flush()
   |             `- warning: capture of 'self' with non-sendable type 'DefaultTelemetrySynchronizer' in a '@Sendable' closure
38 |         }
39 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/TelemetrySynchronizer.swift:43:13: warning: capture of 'self' with non-sendable type 'DefaultTelemetrySynchronizer' in a '@Sendable' closure
18 | }
19 |
20 | class DefaultTelemetrySynchronizer: TelemetrySynchronizer {
   |       `- note: class 'DefaultTelemetrySynchronizer' does not conform to the 'Sendable' protocol
21 |
22 |     private let configRecorderWorker: RecorderWorker
   :
41 |     func synchronizeStats() {
42 |         syncQueue.async {
43 |             self.statsRecorderWorker.flush()
   |             `- warning: capture of 'self' with non-sendable type 'DefaultTelemetrySynchronizer' in a '@Sendable' closure
44 |         }
45 |     }
/Users/admin/builder/spi-builder-workspace/Split/Secure/SecureDataStore.swift:18:16: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'SecureDataStore' may have shared mutable state; this is an error in the Swift 6 language mode
  8 | import Foundation
  9 |
 10 | class SecureDataStore {
    |       `- note: class 'SecureDataStore' does not conform to the 'Sendable' protocol
 11 |
 12 |     enum Asset: String {
    :
 16 |     private var token: String?
 17 |
 18 |     static let shared: SecureDataStore = {
    |                |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'SecureDataStore' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 19 |         let instance = SecureDataStore()
 20 |
[337/361] Compiling Split SecureDataStore.swift
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SseClient.swift:54:30: warning: capture of 'self' with non-sendable type 'DefaultSseClient?' in a '@Sendable' closure
 23 | }
 24 |
 25 | class DefaultSseClient: SseClient {
    |       `- note: class 'DefaultSseClient' does not conform to the 'Sendable' protocol
 26 |
 27 |     ///
    :
 52 |     func connect(token: String, channels: [String], completion: @escaping CompletionHandler) {
 53 |         queue.async(flags: .barrier) { [weak self] in
 54 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultSseClient?' in a '@Sendable' closure
 55 |             let parameters: [String: Any] = [
 56 |                 SseClientConstants.pushNotificationTokenParam: token,
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SseClient.swift:65:80: warning: capture of 'completion' with non-sendable type 'DefaultSseClient.CompletionHandler' (aka '(Bool) -> ()') in a '@Sendable' closure
 63 |                     parameters: HttpParameters(values: parameters),
 64 |                     headers: self.endpoint.headers)
 65 |                 .getResponse(responseHandler: self.responseHandler(completion: completion),
    |                                                                                |- warning: capture of 'completion' with non-sendable type 'DefaultSseClient.CompletionHandler' (aka '(Bool) -> ()') in a '@Sendable' closure
    |                                                                                `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 66 |                              incomingDataHandler: self.incommingDataHandler(completion: completion),
 67 |                              closeHandler: self.closeHandler(),
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SseConnectionHandler.swift:37:30: warning: capture of 'self' with non-sendable type 'SseConnectionHandler?' in a '@Sendable' closure
 9 | import Foundation
10 |
11 | class SseConnectionHandler {
   |       `- note: class 'SseConnectionHandler' does not conform to the 'Sendable' protocol
12 |     private let clientLock = NSLock()
13 |     private let sseClientFactory: SseClientFactory
   :
35 |         clearClientId()
36 |         DispatchQueue.general.async { [weak self] in
37 |             guard let self = self else { return }
   |                              `- warning: capture of 'self' with non-sendable type 'SseConnectionHandler?' in a '@Sendable' closure
38 |             guard let clientId = disconnectingClientId else { return }
39 |             let cli = self.getSseClient(id: clientId)
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SyncEventBroadcaster.swift:43:30: warning: capture of 'self' with non-sendable type 'DefaultSyncEventBroadcaster?' in a '@Sendable' closure
33 | /// to other components
34 | ///
35 | class DefaultSyncEventBroadcaster: SyncEventBroadcaster {
   |       `- note: class 'DefaultSyncEventBroadcaster' does not conform to the 'Sendable' protocol
36 |     let messageQueue = DispatchQueue(label: "split-sync-event-broadcaster",
37 |                                      attributes: .concurrent)
   :
41 |     func push(event: SyncStatusEvent) {
42 |         messageQueue.async { [weak self] in
43 |             guard let self = self else { return }
   |                              `- warning: capture of 'self' with non-sendable type 'DefaultSyncEventBroadcaster?' in a '@Sendable' closure
44 |             for handler in self.handlers {
45 |                 handler(event)
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SyncEventBroadcaster.swift:52:30: warning: capture of 'self' with non-sendable type 'DefaultSyncEventBroadcaster?' in a '@Sendable' closure
33 | /// to other components
34 | ///
35 | class DefaultSyncEventBroadcaster: SyncEventBroadcaster {
   |       `- note: class 'DefaultSyncEventBroadcaster' does not conform to the 'Sendable' protocol
36 |     let messageQueue = DispatchQueue(label: "split-sync-event-broadcaster",
37 |                                      attributes: .concurrent)
   :
50 |     func register(handler: @escaping IncomingMessageHandler) {
51 |         messageQueue.async(flags: .barrier) { [weak self] in
52 |             guard let self = self else { return }
   |                              `- warning: capture of 'self' with non-sendable type 'DefaultSyncEventBroadcaster?' in a '@Sendable' closure
53 |             self.handlers.append(handler)
54 |         }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SyncEventBroadcaster.swift:53:34: warning: capture of 'handler' with non-sendable type 'DefaultSyncEventBroadcaster.IncomingMessageHandler' (aka '(SyncStatusEvent) -> ()') in a '@Sendable' closure
51 |         messageQueue.async(flags: .barrier) { [weak self] in
52 |             guard let self = self else { return }
53 |             self.handlers.append(handler)
   |                                  |- warning: capture of 'handler' with non-sendable type 'DefaultSyncEventBroadcaster.IncomingMessageHandler' (aka '(SyncStatusEvent) -> ()') in a '@Sendable' closure
   |                                  `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
54 |         }
55 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SyncEventBroadcaster.swift:59:30: warning: capture of 'self' with non-sendable type 'DefaultSyncEventBroadcaster?' in a '@Sendable' closure
33 | /// to other components
34 | ///
35 | class DefaultSyncEventBroadcaster: SyncEventBroadcaster {
   |       `- note: class 'DefaultSyncEventBroadcaster' does not conform to the 'Sendable' protocol
36 |     let messageQueue = DispatchQueue(label: "split-sync-event-broadcaster",
37 |                                      attributes: .concurrent)
   :
57 |     func destroy() {
58 |         messageQueue.async(flags: .barrier) { [weak self] in
59 |             guard let self = self else { return }
   |                              `- warning: capture of 'self' with non-sendable type 'DefaultSyncEventBroadcaster?' in a '@Sendable' closure
60 |             self.handlers.removeAll()
61 |         }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SyncSegmentsUpdateWorker.swift:37:13: warning: capture of 'self' with non-sendable type 'SegmentsUpdateWorker' in a '@Sendable' closure
  9 | import Foundation
 10 |
 11 | class SegmentsUpdateWorker: UpdateWorker<MembershipsUpdateNotification> {
    |       `- note: class 'SegmentsUpdateWorker' does not conform to the 'Sendable' protocol
 12 |
 13 |     private let synchronizer: SegmentsSynchronizerWrapper
    :
 35 |     override func process(notification: MembershipsUpdateNotification) throws {
 36 |         processQueue.async {
 37 |             self.process(notification)
    |             `- warning: capture of 'self' with non-sendable type 'SegmentsUpdateWorker' in a '@Sendable' closure
 38 |         }
 39 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SyncUpdateWorker.swift:61:30: warning: capture of 'self' with non-sendable type 'SplitsUpdateWorker?' in a '@Sendable' closure
 25 | }
 26 |
 27 | class SplitsUpdateWorker: UpdateWorker<TargetingRuleUpdateNotification> {
    |       `- note: class 'SplitsUpdateWorker' does not conform to the 'Sendable' protocol
 28 |
 29 |     private let synchronizer: Synchronizer
    :
 59 |         processQueue.async { [weak self] in
 60 |
 61 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'SplitsUpdateWorker?' in a '@Sendable' closure
 62 |             let storedChangeNumber = getChangeNumber(notification.type)
 63 |             if storedChangeNumber >= notification.changeNumber {
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/SyncUpdateWorker.swift:220:13: warning: capture of 'self' with non-sendable type 'SplitKillWorker' in a '@Sendable' closure
205 | }
206 |
207 | class SplitKillWorker: UpdateWorker<SplitKillNotification> {
    |       `- note: class 'SplitKillWorker' does not conform to the 'Sendable' protocol
208 |
209 |     private let synchronizer: Synchronizer
    :
218 |     override func process(notification: SplitKillNotification) throws {
219 |         processQueue.async {
220 |             self.process(notification)
    |             `- warning: capture of 'self' with non-sendable type 'SplitKillWorker' in a '@Sendable' closure
221 |         }
222 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/FeatureFlagsSynchronizer.swift:85:30: warning: capture of 'self' with non-sendable type 'DefaultFeatureFlagsSynchronizer?' in a '@Sendable' closure
 22 | }
 23 |
 24 | class DefaultFeatureFlagsSynchronizer: FeatureFlagsSynchronizer {
    |       `- note: class 'DefaultFeatureFlagsSynchronizer' does not conform to the 'Sendable' protocol
 25 |
 26 |     private var storageContainer: SplitStorageContainer
    :
 83 |
 84 |         DispatchQueue.general.async { [weak self] in
 85 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultFeatureFlagsSynchronizer?' in a '@Sendable' closure
 86 |
 87 |             let start = Date.nowMillis()
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/FeatureFlagsSynchronizer.swift:94:17: warning: capture of 'splitsStorage' with non-sendable type 'any SplitsStorage' in a '@Sendable' closure
 92 |             if shouldForceParse() {
 93 |                 Logger.v("Force Parsing flags")
 94 |                 splitsStorage.forceParsing()
    |                 `- warning: capture of 'splitsStorage' with non-sendable type 'any SplitsStorage' in a '@Sendable' closure
 95 |                 ruleBasedSegmentsStorage.forceParsing()
 96 |                 TimeChecker.logInterval("Time for Force Parsing", startTime: start)
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsStorage.swift:15:10: note: protocol 'SplitsStorage' does not conform to the 'Sendable' protocol
 13 | }
 14 |
 15 | protocol SplitsStorage: SyncSplitsStorage {
    |          `- note: protocol 'SplitsStorage' does not conform to the 'Sendable' protocol
 16 |     var changeNumber: Int64 { get }
 17 |     var updateTimestamp: Int64 { get }
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/FeatureFlagsSynchronizer.swift:95:17: warning: capture of 'ruleBasedSegmentsStorage' with non-sendable type 'any RuleBasedSegmentsStorage' in a '@Sendable' closure
 93 |                 Logger.v("Force Parsing flags")
 94 |                 splitsStorage.forceParsing()
 95 |                 ruleBasedSegmentsStorage.forceParsing()
    |                 `- warning: capture of 'ruleBasedSegmentsStorage' with non-sendable type 'any RuleBasedSegmentsStorage' in a '@Sendable' closure
 96 |                 TimeChecker.logInterval("Time for Force Parsing", startTime: start)
 97 |             }
/Users/admin/builder/spi-builder-workspace/Split/Storage/RuleBasedSegments/RuleBasedSegmentsStorage.swift:11:10: note: protocol 'RuleBasedSegmentsStorage' does not conform to the 'Sendable' protocol
  9 | import Foundation
 10 |
 11 | protocol RuleBasedSegmentsStorage: RolloutDefinitionsCache {
    |          `- note: protocol 'RuleBasedSegmentsStorage' does not conform to the 'Sendable' protocol
 12 |     var changeNumber: Int64 { get }
 13 |
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/MySegmentsSynchronizer.swift:82:30: warning: capture of 'self' with non-sendable type 'DefaultMySegmentsSynchronizer?' in a '@Sendable' closure
 21 |
 22 | // One instance per client
 23 | class DefaultMySegmentsSynchronizer: MySegmentsSynchronizer {
    |       `- note: class 'DefaultMySegmentsSynchronizer' does not conform to the 'Sendable' protocol
 24 |
 25 |     private let mySegmentsStorage: ByKeyMySegmentsStorage
    :
 80 |         }
 81 |         DispatchQueue.general.async { [weak self] in
 82 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultMySegmentsSynchronizer?' in a '@Sendable' closure
 83 |             self.mySegmentsStorage.loadLocal()
 84 |             self.eventsManager.notifyInternalEvent(.mySegmentsLoadedFromCache)
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/Synchronizer.swift:197:30: warning: capture of 'self' with non-sendable type 'DefaultSynchronizer?' in a '@Sendable' closure
 45 | }
 46 |
 47 | class DefaultSynchronizer: Synchronizer {
    |       `- note: class 'DefaultSynchronizer' does not conform to the 'Sendable' protocol
 48 |
 49 |     private let splitConfig: SplitClientConfig
    :
195 |     func pushEvent(event: EventDTO) {
196 |         flushQueue.async { [weak self] in
197 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultSynchronizer?' in a '@Sendable' closure
198 |             self.eventsSynchronizer.push(event)
199 |         }
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/Synchronizer.swift:198:42: warning: capture of 'event' with non-sendable type 'EventDTO' in a '@Sendable' closure
196 |         flushQueue.async { [weak self] in
197 |             guard let self = self else { return }
198 |             self.eventsSynchronizer.push(event)
    |                                          `- warning: capture of 'event' with non-sendable type 'EventDTO' in a '@Sendable' closure
199 |         }
200 |     }
/Users/admin/builder/spi-builder-workspace/Split/Track/Models/EventDTO.swift:11:7: note: class 'EventDTO' does not conform to the 'Sendable' protocol
 9 |
10 | // TODO: Rename to Event
11 | class EventDTO: DynamicCodable {
   |       `- note: class 'EventDTO' does not conform to the 'Sendable' protocol
12 |     var storageId: String?
13 |     var key: String?
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/Synchronizer.swift:204:30: warning: capture of 'self' with non-sendable type 'DefaultSynchronizer?' in a '@Sendable' closure
 45 | }
 46 |
 47 | class DefaultSynchronizer: Synchronizer {
    |       `- note: class 'DefaultSynchronizer' does not conform to the 'Sendable' protocol
 48 |
 49 |     private let splitConfig: SplitClientConfig
    :
202 |     func pushImpression(impression: DecoratedImpression) {
203 |         flushQueue.async { [weak self] in
204 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultSynchronizer?' in a '@Sendable' closure
205 |
206 |             self.impressionsTracker.push(impression)
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/Synchronizer.swift:245:30: warning: capture of 'self' with non-sendable type 'DefaultSynchronizer?' in a '@Sendable' closure
 45 | }
 46 |
 47 | class DefaultSynchronizer: Synchronizer {
    |       `- note: class 'DefaultSynchronizer' does not conform to the 'Sendable' protocol
 48 |
 49 |     private let splitConfig: SplitClientConfig
    :
243 |     func flush() {
244 |         flushQueue.async {  [weak self] in
245 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultSynchronizer?' in a '@Sendable' closure
246 |
247 |             self.impressionsTracker.flush()
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/TelemetrySynchronizer.swift:37:13: warning: capture of 'self' with non-sendable type 'DefaultTelemetrySynchronizer' in a '@Sendable' closure
18 | }
19 |
20 | class DefaultTelemetrySynchronizer: TelemetrySynchronizer {
   |       `- note: class 'DefaultTelemetrySynchronizer' does not conform to the 'Sendable' protocol
21 |
22 |     private let configRecorderWorker: RecorderWorker
   :
35 |     func synchronizeConfig() {
36 |         syncQueue.async {
37 |             self.configRecorderWorker.flush()
   |             `- warning: capture of 'self' with non-sendable type 'DefaultTelemetrySynchronizer' in a '@Sendable' closure
38 |         }
39 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/TelemetrySynchronizer.swift:43:13: warning: capture of 'self' with non-sendable type 'DefaultTelemetrySynchronizer' in a '@Sendable' closure
18 | }
19 |
20 | class DefaultTelemetrySynchronizer: TelemetrySynchronizer {
   |       `- note: class 'DefaultTelemetrySynchronizer' does not conform to the 'Sendable' protocol
21 |
22 |     private let configRecorderWorker: RecorderWorker
   :
41 |     func synchronizeStats() {
42 |         syncQueue.async {
43 |             self.statsRecorderWorker.flush()
   |             `- warning: capture of 'self' with non-sendable type 'DefaultTelemetrySynchronizer' in a '@Sendable' closure
44 |         }
45 |     }
/Users/admin/builder/spi-builder-workspace/Split/Secure/SecureDataStore.swift:18:16: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'SecureDataStore' may have shared mutable state; this is an error in the Swift 6 language mode
  8 | import Foundation
  9 |
 10 | class SecureDataStore {
    |       `- note: class 'SecureDataStore' does not conform to the 'Sendable' protocol
 11 |
 12 |     enum Asset: String {
    :
 16 |     private var token: String?
 17 |
 18 |     static let shared: SecureDataStore = {
    |                |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'SecureDataStore' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 19 |         let instance = SecureDataStore()
 20 |
[338/361] Compiling Split RestClient+SplitChanges.swift
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:27: warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |                           |- warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
   |                           `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:35:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
33 |     func cancel() {
34 |         queue.async {
35 |             self.workItem?.cancel()
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
36 |             self.workItem = nil
37 |             self.reconnectBackoffCounter.resetCounter()
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/PushNotificationManager.swift:110:30: warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
 20 | }
 21 |
 22 | class DefaultPushNotificationManager: PushNotificationManager {
    |       `- note: class 'DefaultPushNotificationManager' does not conform to the 'Sendable' protocol
 23 |
 24 |     private let kSseKeepAliveTimeInSeconds = 70
    :
108 |
109 |         connectionQueue.async { [weak self] in
110 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
111 |             self.isConnecting.set(true)
112 |             self.authenticateAndConnect()
[339/361] Compiling Split RestClient+SseAuthenticator.swift
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:27: warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |                           |- warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
   |                           `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:35:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
33 |     func cancel() {
34 |         queue.async {
35 |             self.workItem?.cancel()
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
36 |             self.workItem = nil
37 |             self.reconnectBackoffCounter.resetCounter()
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/PushNotificationManager.swift:110:30: warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
 20 | }
 21 |
 22 | class DefaultPushNotificationManager: PushNotificationManager {
    |       `- note: class 'DefaultPushNotificationManager' does not conform to the 'Sendable' protocol
 23 |
 24 |     private let kSseKeepAliveTimeInSeconds = 70
    :
108 |
109 |         connectionQueue.async { [weak self] in
110 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
111 |             self.isConnecting.set(true)
112 |             self.authenticateAndConnect()
[340/361] Compiling Split RestClient+TelemetryConfig.swift
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:27: warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |                           |- warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
   |                           `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:35:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
33 |     func cancel() {
34 |         queue.async {
35 |             self.workItem?.cancel()
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
36 |             self.workItem = nil
37 |             self.reconnectBackoffCounter.resetCounter()
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/PushNotificationManager.swift:110:30: warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
 20 | }
 21 |
 22 | class DefaultPushNotificationManager: PushNotificationManager {
    |       `- note: class 'DefaultPushNotificationManager' does not conform to the 'Sendable' protocol
 23 |
 24 |     private let kSseKeepAliveTimeInSeconds = 70
    :
108 |
109 |         connectionQueue.async { [weak self] in
110 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
111 |             self.isConnecting.set(true)
112 |             self.authenticateAndConnect()
[341/361] Compiling Split RestClient+TelemetryStats.swift
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:27: warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |                           |- warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
   |                           `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:35:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
33 |     func cancel() {
34 |         queue.async {
35 |             self.workItem?.cancel()
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
36 |             self.workItem = nil
37 |             self.reconnectBackoffCounter.resetCounter()
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/PushNotificationManager.swift:110:30: warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
 20 | }
 21 |
 22 | class DefaultPushNotificationManager: PushNotificationManager {
    |       `- note: class 'DefaultPushNotificationManager' does not conform to the 'Sendable' protocol
 23 |
 24 |     private let kSseKeepAliveTimeInSeconds = 70
    :
108 |
109 |         connectionQueue.async { [weak self] in
110 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
111 |             self.isConnecting.set(true)
112 |             self.authenticateAndConnect()
[342/361] Compiling Split RestClient+TrackEvents.swift
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:27: warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |                           |- warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
   |                           `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:35:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
33 |     func cancel() {
34 |         queue.async {
35 |             self.workItem?.cancel()
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
36 |             self.workItem = nil
37 |             self.reconnectBackoffCounter.resetCounter()
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/PushNotificationManager.swift:110:30: warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
 20 | }
 21 |
 22 | class DefaultPushNotificationManager: PushNotificationManager {
    |       `- note: class 'DefaultPushNotificationManager' does not conform to the 'Sendable' protocol
 23 |
 24 |     private let kSseKeepAliveTimeInSeconds = 70
    :
108 |
109 |         connectionQueue.async { [weak self] in
110 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
111 |             self.isConnecting.set(true)
112 |             self.authenticateAndConnect()
[343/361] Compiling Split RestClient+UniqueKeys.swift
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:27: warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |                           |- warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
   |                           `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:35:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
33 |     func cancel() {
34 |         queue.async {
35 |             self.workItem?.cancel()
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
36 |             self.workItem = nil
37 |             self.reconnectBackoffCounter.resetCounter()
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/PushNotificationManager.swift:110:30: warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
 20 | }
 21 |
 22 | class DefaultPushNotificationManager: PushNotificationManager {
    |       `- note: class 'DefaultPushNotificationManager' does not conform to the 'Sendable' protocol
 23 |
 24 |     private let kSseKeepAliveTimeInSeconds = 70
    :
108 |
109 |         connectionQueue.async { [weak self] in
110 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
111 |             self.isConnecting.set(true)
112 |             self.authenticateAndConnect()
[344/361] Compiling Split RestClient.swift
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:27: warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |                           |- warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
   |                           `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:35:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
33 |     func cancel() {
34 |         queue.async {
35 |             self.workItem?.cancel()
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
36 |             self.workItem = nil
37 |             self.reconnectBackoffCounter.resetCounter()
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/PushNotificationManager.swift:110:30: warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
 20 | }
 21 |
 22 | class DefaultPushNotificationManager: PushNotificationManager {
    |       `- note: class 'DefaultPushNotificationManager' does not conform to the 'Sendable' protocol
 23 |
 24 |     private let kSseKeepAliveTimeInSeconds = 70
    :
108 |
109 |         connectionQueue.async { [weak self] in
110 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
111 |             self.isConnecting.set(true)
112 |             self.authenticateAndConnect()
[345/361] Compiling Split AllSegmentsChange.swift
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:27: warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |                           |- warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
   |                           `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:35:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
33 |     func cancel() {
34 |         queue.async {
35 |             self.workItem?.cancel()
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
36 |             self.workItem = nil
37 |             self.reconnectBackoffCounter.resetCounter()
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/PushNotificationManager.swift:110:30: warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
 20 | }
 21 |
 22 | class DefaultPushNotificationManager: PushNotificationManager {
    |       `- note: class 'DefaultPushNotificationManager' does not conform to the 'Sendable' protocol
 23 |
 24 |     private let kSseKeepAliveTimeInSeconds = 70
    :
108 |
109 |         connectionQueue.async { [weak self] in
110 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
111 |             self.isConnecting.set(true)
112 |             self.authenticateAndConnect()
[346/361] Compiling Split DataResult.swift
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:27: warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |                           |- warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
   |                           `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:35:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
33 |     func cancel() {
34 |         queue.async {
35 |             self.workItem?.cancel()
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
36 |             self.workItem = nil
37 |             self.reconnectBackoffCounter.resetCounter()
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/PushNotificationManager.swift:110:30: warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
 20 | }
 21 |
 22 | class DefaultPushNotificationManager: PushNotificationManager {
    |       `- note: class 'DefaultPushNotificationManager' does not conform to the 'Sendable' protocol
 23 |
 24 |     private let kSseKeepAliveTimeInSeconds = 70
    :
108 |
109 |         connectionQueue.async { [weak self] in
110 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
111 |             self.isConnecting.set(true)
112 |             self.authenticateAndConnect()
[347/361] Compiling Split SegmentsChange.swift
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:27: warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |                           |- warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
   |                           `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:35:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
33 |     func cancel() {
34 |         queue.async {
35 |             self.workItem?.cancel()
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
36 |             self.workItem = nil
37 |             self.reconnectBackoffCounter.resetCounter()
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/PushNotificationManager.swift:110:30: warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
 20 | }
 21 |
 22 | class DefaultPushNotificationManager: PushNotificationManager {
    |       `- note: class 'DefaultPushNotificationManager' does not conform to the 'Sendable' protocol
 23 |
 24 |     private let kSseKeepAliveTimeInSeconds = 70
    :
108 |
109 |         connectionQueue.async { [weak self] in
110 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
111 |             self.isConnecting.set(true)
112 |             self.authenticateAndConnect()
[348/361] Compiling Split HostDomainFilter.swift
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:27: warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |                           |- warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
   |                           `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:35:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
33 |     func cancel() {
34 |         queue.async {
35 |             self.workItem?.cancel()
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
36 |             self.workItem = nil
37 |             self.reconnectBackoffCounter.resetCounter()
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/PushNotificationManager.swift:110:30: warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
 20 | }
 21 |
 22 | class DefaultPushNotificationManager: PushNotificationManager {
    |       `- note: class 'DefaultPushNotificationManager' does not conform to the 'Sendable' protocol
 23 |
 24 |     private let kSseKeepAliveTimeInSeconds = 70
    :
108 |
109 |         connectionQueue.async { [weak self] in
110 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
111 |             self.isConnecting.set(true)
112 |             self.authenticateAndConnect()
[349/361] Compiling Split PublicKeyHeaders.swift
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:27: warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |                           |- warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
   |                           `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:35:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
33 |     func cancel() {
34 |         queue.async {
35 |             self.workItem?.cancel()
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
36 |             self.workItem = nil
37 |             self.reconnectBackoffCounter.resetCounter()
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/PushNotificationManager.swift:110:30: warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
 20 | }
 21 |
 22 | class DefaultPushNotificationManager: PushNotificationManager {
    |       `- note: class 'DefaultPushNotificationManager' does not conform to the 'Sendable' protocol
 23 |
 24 |     private let kSseKeepAliveTimeInSeconds = 70
    :
108 |
109 |         connectionQueue.async { [weak self] in
110 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
111 |             self.isConnecting.set(true)
112 |             self.authenticateAndConnect()
[350/361] Compiling Split TlsPinChecker.swift
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:27: warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |                           |- warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
   |                           `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:35:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
33 |     func cancel() {
34 |         queue.async {
35 |             self.workItem?.cancel()
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
36 |             self.workItem = nil
37 |             self.reconnectBackoffCounter.resetCounter()
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/PushNotificationManager.swift:110:30: warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
 20 | }
 21 |
 22 | class DefaultPushNotificationManager: PushNotificationManager {
    |       `- note: class 'DefaultPushNotificationManager' does not conform to the 'Sendable' protocol
 23 |
 24 |     private let kSseKeepAliveTimeInSeconds = 70
    :
108 |
109 |         connectionQueue.async { [weak self] in
110 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
111 |             self.isConnecting.set(true)
112 |             self.authenticateAndConnect()
[351/361] Compiling Split BackoffCounterTimer.swift
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:27: warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |                           |- warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
   |                           `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:35:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
33 |     func cancel() {
34 |         queue.async {
35 |             self.workItem?.cancel()
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
36 |             self.workItem = nil
37 |             self.reconnectBackoffCounter.resetCounter()
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/PushNotificationManager.swift:110:30: warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
 20 | }
 21 |
 22 | class DefaultPushNotificationManager: PushNotificationManager {
    |       `- note: class 'DefaultPushNotificationManager' does not conform to the 'Sendable' protocol
 23 |
 24 |     private let kSseKeepAliveTimeInSeconds = 70
    :
108 |
109 |         connectionQueue.async { [weak self] in
110 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
111 |             self.isConnecting.set(true)
112 |             self.authenticateAndConnect()
[352/361] Compiling Split DefaultSseNotificationParser.swift
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:27: warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |                           |- warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
   |                           `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:35:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
33 |     func cancel() {
34 |         queue.async {
35 |             self.workItem?.cancel()
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
36 |             self.workItem = nil
37 |             self.reconnectBackoffCounter.resetCounter()
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/PushNotificationManager.swift:110:30: warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
 20 | }
 21 |
 22 | class DefaultPushNotificationManager: PushNotificationManager {
    |       `- note: class 'DefaultPushNotificationManager' does not conform to the 'Sendable' protocol
 23 |
 24 |     private let kSseKeepAliveTimeInSeconds = 70
    :
108 |
109 |         connectionQueue.async { [weak self] in
110 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
111 |             self.isConnecting.set(true)
112 |             self.authenticateAndConnect()
[353/361] Compiling Split EventStreamParser.swift
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:27: warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |                           |- warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
   |                           `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:35:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
33 |     func cancel() {
34 |         queue.async {
35 |             self.workItem?.cancel()
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
36 |             self.workItem = nil
37 |             self.reconnectBackoffCounter.resetCounter()
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/PushNotificationManager.swift:110:30: warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
 20 | }
 21 |
 22 | class DefaultPushNotificationManager: PushNotificationManager {
    |       `- note: class 'DefaultPushNotificationManager' does not conform to the 'Sendable' protocol
 23 |
 24 |     private let kSseKeepAliveTimeInSeconds = 70
    :
108 |
109 |         connectionQueue.async { [weak self] in
110 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
111 |             self.isConnecting.set(true)
112 |             self.authenticateAndConnect()
[354/361] Compiling Split FeatureFlagsPayloadDecoder.swift
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:27: warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |                           |- warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
   |                           `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:35:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
33 |     func cancel() {
34 |         queue.async {
35 |             self.workItem?.cancel()
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
36 |             self.workItem = nil
37 |             self.reconnectBackoffCounter.resetCounter()
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/PushNotificationManager.swift:110:30: warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
 20 | }
 21 |
 22 | class DefaultPushNotificationManager: PushNotificationManager {
    |       `- note: class 'DefaultPushNotificationManager' does not conform to the 'Sendable' protocol
 23 |
 24 |     private let kSseKeepAliveTimeInSeconds = 70
    :
108 |
109 |         connectionQueue.async { [weak self] in
110 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
111 |             self.isConnecting.set(true)
112 |             self.authenticateAndConnect()
[355/361] Compiling Split JwtTokenParser.swift
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:27: warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |                           |- warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
   |                           `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:35:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
33 |     func cancel() {
34 |         queue.async {
35 |             self.workItem?.cancel()
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
36 |             self.workItem = nil
37 |             self.reconnectBackoffCounter.resetCounter()
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/PushNotificationManager.swift:110:30: warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
 20 | }
 21 |
 22 | class DefaultPushNotificationManager: PushNotificationManager {
    |       `- note: class 'DefaultPushNotificationManager' does not conform to the 'Sendable' protocol
 23 |
 24 |     private let kSseKeepAliveTimeInSeconds = 70
    :
108 |
109 |         connectionQueue.async { [weak self] in
110 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
111 |             self.isConnecting.set(true)
112 |             self.authenticateAndConnect()
[356/361] Compiling Split MySegmentsPayloadDecoder.swift
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:27: warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |                           |- warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
   |                           `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:35:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
33 |     func cancel() {
34 |         queue.async {
35 |             self.workItem?.cancel()
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
36 |             self.workItem = nil
37 |             self.reconnectBackoffCounter.resetCounter()
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/PushNotificationManager.swift:110:30: warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
 20 | }
 21 |
 22 | class DefaultPushNotificationManager: PushNotificationManager {
    |       `- note: class 'DefaultPushNotificationManager' does not conform to the 'Sendable' protocol
 23 |
 24 |     private let kSseKeepAliveTimeInSeconds = 70
    :
108 |
109 |         connectionQueue.async { [weak self] in
110 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
111 |             self.isConnecting.set(true)
112 |             self.authenticateAndConnect()
[357/361] Compiling Split NotificationManagerKeeper.swift
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:27: warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |                           |- warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
   |                           `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:35:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
33 |     func cancel() {
34 |         queue.async {
35 |             self.workItem?.cancel()
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
36 |             self.workItem = nil
37 |             self.reconnectBackoffCounter.resetCounter()
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/PushNotificationManager.swift:110:30: warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
 20 | }
 21 |
 22 | class DefaultPushNotificationManager: PushNotificationManager {
    |       `- note: class 'DefaultPushNotificationManager' does not conform to the 'Sendable' protocol
 23 |
 24 |     private let kSseKeepAliveTimeInSeconds = 70
    :
108 |
109 |         connectionQueue.async { [weak self] in
110 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
111 |             self.isConnecting.set(true)
112 |             self.authenticateAndConnect()
[358/361] Compiling Split PushNotificationManager.swift
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:27: warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |                           |- warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
   |                           `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:35:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
33 |     func cancel() {
34 |         queue.async {
35 |             self.workItem?.cancel()
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
36 |             self.workItem = nil
37 |             self.reconnectBackoffCounter.resetCounter()
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/PushNotificationManager.swift:110:30: warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
 20 | }
 21 |
 22 | class DefaultPushNotificationManager: PushNotificationManager {
    |       `- note: class 'DefaultPushNotificationManager' does not conform to the 'Sendable' protocol
 23 |
 24 |     private let kSseKeepAliveTimeInSeconds = 70
    :
108 |
109 |         connectionQueue.async { [weak self] in
110 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
111 |             self.isConnecting.set(true)
112 |             self.authenticateAndConnect()
[359/361] Compiling Split ReconnectBackoffCounter.swift
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:27: warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |                           |- warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
   |                           `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:35:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
33 |     func cancel() {
34 |         queue.async {
35 |             self.workItem?.cancel()
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
36 |             self.workItem = nil
37 |             self.reconnectBackoffCounter.resetCounter()
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/PushNotificationManager.swift:110:30: warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
 20 | }
 21 |
 22 | class DefaultPushNotificationManager: PushNotificationManager {
    |       `- note: class 'DefaultPushNotificationManager' does not conform to the 'Sendable' protocol
 23 |
 24 |     private let kSseKeepAliveTimeInSeconds = 70
    :
108 |
109 |         connectionQueue.async { [weak self] in
110 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
111 |             self.isConnecting.set(true)
112 |             self.authenticateAndConnect()
[360/361] Compiling Split RetryableSplitsUpdateWorkerFactory.swift
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:27: warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |                           |- warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
   |                           `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:35:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
33 |     func cancel() {
34 |         queue.async {
35 |             self.workItem?.cancel()
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
36 |             self.workItem = nil
37 |             self.reconnectBackoffCounter.resetCounter()
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/PushNotificationManager.swift:110:30: warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
 20 | }
 21 |
 22 | class DefaultPushNotificationManager: PushNotificationManager {
    |       `- note: class 'DefaultPushNotificationManager' does not conform to the 'Sendable' protocol
 23 |
 24 |     private let kSseKeepAliveTimeInSeconds = 70
    :
108 |
109 |         connectionQueue.async { [weak self] in
110 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
111 |             self.isConnecting.set(true)
112 |             self.authenticateAndConnect()
[361/361] Compiling Split SegmentsPayloadDecoder.swift
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:29:27: warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
27 |     func schedule(handler: @escaping () -> Void) {
28 |         queue.async {
29 |             self.schedule(handler)
   |                           |- warning: capture of 'handler' with non-sendable type '() -> Void' in a '@Sendable' closure
   |                           `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
30 |         }
31 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/BackoffCounterTimer.swift:35:13: warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
14 | }
15 |
16 | class DefaultBackoffCounterTimer: BackoffCounterTimer {
   |       `- note: class 'DefaultBackoffCounterTimer' does not conform to the 'Sendable' protocol
17 |     private let reconnectBackoffCounter: ReconnectBackoffCounter
18 |     private let queue = DispatchQueue(label: "split-backoff-timer")
   :
33 |     func cancel() {
34 |         queue.async {
35 |             self.workItem?.cancel()
   |             `- warning: capture of 'self' with non-sendable type 'DefaultBackoffCounterTimer' in a '@Sendable' closure
36 |             self.workItem = nil
37 |             self.reconnectBackoffCounter.resetCounter()
/Users/admin/builder/spi-builder-workspace/Split/Network/Streaming/PushNotificationManager.swift:110:30: warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
 20 | }
 21 |
 22 | class DefaultPushNotificationManager: PushNotificationManager {
    |       `- note: class 'DefaultPushNotificationManager' does not conform to the 'Sendable' protocol
 23 |
 24 |     private let kSseKeepAliveTimeInSeconds = 70
    :
108 |
109 |         connectionQueue.async { [weak self] in
110 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultPushNotificationManager?' in a '@Sendable' closure
111 |             self.isConnecting.set(true)
112 |             self.authenticateAndConnect()
Build complete! (10.17s)
Build complete.
{
  "dependencies" : [
  ],
  "manifest_display_name" : "Split",
  "name" : "Split",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "ios",
      "version" : "9.0"
    },
    {
      "name" : "macos",
      "version" : "10.11"
    },
    {
      "name" : "watchos",
      "version" : "7.0"
    },
    {
      "name" : "tvos",
      "version" : "9.0"
    }
  ],
  "products" : [
    {
      "name" : "Split",
      "targets" : [
        "Split"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "Split",
      "module_type" : "SwiftTarget",
      "name" : "Split",
      "path" : "Split",
      "product_memberships" : [
        "Split"
      ],
      "resources" : [
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Split/Storage/split_cache.xcdatamodeld",
          "rule" : {
            "process" : {
            }
          }
        }
      ],
      "sources" : [
        "Api/CertificatePinningConfig.swift",
        "Api/DefaultSplitClient.swift",
        "Api/DefaultSplitFactory.swift",
        "Api/DefaultSplitFactoryBuilder.swift",
        "Api/DefaultSplitManager.swift",
        "Api/Destroyable.swift",
        "Api/EvaluationOptions.swift",
        "Api/EventsTracker.swift",
        "Api/FailHelpers.swift",
        "Api/FilterBuilder.swift",
        "Api/FlagSetsValidator.swift",
        "Api/InternalSplitClient.swift",
        "Api/LocalhostSplitClient.swift",
        "Api/LocalhostSplitFactory.swift",
        "Api/RolloutCacheConfiguration.swift",
        "Api/SplitApiFacade.swift",
        "Api/SplitCertPinningAuthenticator.swift",
        "Api/SplitClient.swift",
        "Api/SplitClientConfig.swift",
        "Api/SplitClientManager.swift",
        "Api/SplitDatabaseHelper.swift",
        "Api/SplitEncryptionLevel.swift",
        "Api/SplitError.swift",
        "Api/SplitFactory.swift",
        "Api/SplitFactoryBuilder.swift",
        "Api/SplitFilter.swift",
        "Api/SplitHttpsAuthenticator.swift",
        "Api/SplitLocalhostDataSource.swift",
        "Api/SplitLogLevel.swift",
        "Api/SplitManager.swift",
        "Api/SplitResult.swift",
        "Api/SplitView.swift",
        "Api/SyncConfig.swift",
        "Api/TelemetryConfigHelper.swift",
        "Api/UserConsentManager.swift",
        "Common/Config/UserConsent.swift",
        "Common/Extensions/Array+Chunked.swift",
        "Common/Extensions/Array+DynamicCodable.swift",
        "Common/Extensions/Array+asSet.swift",
        "Common/Extensions/Bundle+Finder.swift",
        "Common/Extensions/Bundle+Name.swift",
        "Common/Extensions/Data+StringRepresentation.swift",
        "Common/Extensions/Date+Utils.swift",
        "Common/Extensions/Dictionary+DynamicCodable.swift",
        "Common/Extensions/Dictionary+Extensions.swift",
        "Common/Extensions/Dictionary+JSON.swift",
        "Common/Extensions/Int+Extension.swift",
        "Common/Extensions/Set+Extension.swift",
        "Common/Extensions/SplitView+StringConvertible.swift",
        "Common/Extensions/String+Utils.swift",
        "Common/Extensions/UInt64+bits.swift",
        "Common/ServiceConstants.swift",
        "Common/Structs/BlockingQueue.swift",
        "Common/Structs/ConcurrentArrayQueue.swift",
        "Common/Structs/ConcurrentDictionary.swift",
        "Common/Structs/ConcurrentDictionaryList.swift",
        "Common/Structs/ConcurrentSet.swift",
        "Common/Structs/KeyStorage.swift",
        "Common/Structs/LRUCache.swift",
        "Common/Structs/SynchronizedDictionary.swift",
        "Common/Structs/SynchronizedDictionaryComposed.swift",
        "Common/Structs/SynchronizedDictionarySet.swift",
        "Common/Structs/SynchronizedList.swift",
        "Common/Utils/Atomic.swift",
        "Common/Utils/Base64Utils.swift",
        "Common/Utils/CastUtils.swift",
        "Common/Utils/Cipher.swift",
        "Common/Utils/CompressionUtil.swift",
        "Common/Utils/DbCipher.swift",
        "Common/Utils/FileUtil.swift",
        "Common/Utils/InfoUtils.swift",
        "Common/Utils/Logger.swift",
        "Common/Utils/NotificationsHelper.swift",
        "Common/Utils/PeriodicTaskManager.swift",
        "Common/Utils/Spec.swift",
        "Common/Utils/SplitHelper.swift",
        "Common/Utils/Stopwatch.swift",
        "Common/Utils/ThreadUtils.swift",
        "Common/Utils/Version.swift",
        "Common/Validators/AnyValueValidator.swift",
        "Common/Validators/ApiKeyValidator.swift",
        "Common/Validators/EventValidator.swift",
        "Common/Validators/FactoryMonitor.swift",
        "Common/Validators/KeyValidator.swift",
        "Common/Validators/PropertyValidator.swift",
        "Common/Validators/SplitValidator.swift",
        "Common/Validators/ValidationConfig.swift",
        "Common/Validators/ValidationErrorInfo.swift",
        "Common/Validators/ValidatorMessageLogger.swift",
        "Common/Yaml/YAMLOperators.swift",
        "Common/Yaml/YAMLParser.swift",
        "Common/Yaml/YAMLRegex.swift",
        "Common/Yaml/YAMLResult.swift",
        "Common/Yaml/YAMLTokenizer.swift",
        "Common/Yaml/Yaml.swift",
        "Engine/Constants/SplitConstants.swift",
        "Engine/DefaultTreatmentManager.swift",
        "Engine/Evaluator.swift",
        "Engine/EvaluatorError.swift",
        "Engine/Hashing/LegacyHash.swift",
        "Engine/Hashing/Murmur3Hash.swift",
        "Engine/Hashing/Murmur64x128.swift",
        "Engine/Partition.swift",
        "Engine/Splitter.swift",
        "Engine/TreatmentManager.swift",
        "Events/EventsManagerCoordinator.swift",
        "Events/SplitEvent.swift",
        "Events/SplitEventActionTask.swift",
        "Events/SplitEventTask.swift",
        "Events/SplitEventsManager.swift",
        "Events/SplitInternalEvent.swift",
        "FetcherEngine/HttpMySegmentsFetcher.swift",
        "FetcherEngine/HttpSplitFetcher.swift",
        "FetcherEngine/Recorder/EventsRecorder.swift",
        "FetcherEngine/Recorder/EventsRecorderWorker.swift",
        "FetcherEngine/Recorder/ImpressionsCountRecorder.swift",
        "FetcherEngine/Recorder/ImpressionsCountRecorderWorker.swift",
        "FetcherEngine/Recorder/ImpressionsRecorder.swift",
        "FetcherEngine/Recorder/ImpressionsRecorderWorker.swift",
        "FetcherEngine/Recorder/PeriodicRecorderWorker.swift",
        "FetcherEngine/Recorder/RecorderWorker.swift",
        "FetcherEngine/Recorder/TelemetryConfigRecorder.swift",
        "FetcherEngine/Recorder/TelemetryConfigRecorderWorker.swift",
        "FetcherEngine/Recorder/TelemetryStatsRecorder.swift",
        "FetcherEngine/Recorder/TelemetryStatsRecorderWorker.swift",
        "FetcherEngine/Recorder/UniqueKeysRecorder.swift",
        "FetcherEngine/Recorder/UniqueKeysRecorderWorker.swift",
        "FetcherEngine/Refresh/BackgroundSyncWorker.swift",
        "FetcherEngine/Refresh/ChangesChecker.swift",
        "FetcherEngine/Refresh/EmptyMySegmentsStorage.swift",
        "FetcherEngine/Refresh/PeriodicSyncWorker.swift",
        "FetcherEngine/Refresh/QueryableMySegmentsFetcher.swift",
        "FetcherEngine/Refresh/RetryableSegmentsSyncWorker.swift",
        "FetcherEngine/Refresh/RetryableSyncWorker.swift",
        "FetcherEngine/Refresh/SplitBgSynchronizer.swift",
        "FetcherEngine/Refresh/SplitsSyncHelper.swift",
        "FetcherEngine/SyncHelper.swift",
        "Impressions/DecoratedImpression.swift",
        "Impressions/DefaultImpressionsObserver.swift",
        "Impressions/HashedImpression.swift",
        "Impressions/Impression.swift",
        "Impressions/ImpressionsConstants.swift",
        "Impressions/ImpressionsCount.swift",
        "Impressions/ImpressionsCountEntity.swift",
        "Impressions/ImpressionsCountPerFeature.swift",
        "Impressions/ImpressionsCounter.swift",
        "Impressions/ImpressionsTest.swift",
        "Impressions/KeyImpression.swift",
        "Impressions/UniqueKey.swift",
        "Impressions/UniqueKeys.swift",
        "Initialization/RolloutCacheManager.swift",
        "Initialization/SplitComponentCatalog.swift",
        "Initialization/SplitComponentFactory.swift",
        "Localhost/LocalhostApiDataSource.swift",
        "Localhost/LocalhostClientManager.swift",
        "Localhost/LocalhostFileDataSource.swift",
        "Localhost/LocalhostSplitsParser.swift",
        "Localhost/LocalhostSplitsStorage.swift",
        "Localhost/LocalhostSynchronizer.swift",
        "Localhost/SpaceDelimitedLocalhostSplitsParser.swift",
        "Localhost/YamlLocalhostSplitsParser.swift",
        "Matchers/AllKeysMatcher.swift",
        "Matchers/BaseMatcher.swift",
        "Matchers/BetweenMatcher.swift",
        "Matchers/ContainsAllOfSetMatcher.swift",
        "Matchers/ContainsAnyOfSetMatcher.swift",
        "Matchers/ContainsStringMatcher.swift",
        "Matchers/DataType/DateTime.swift",
        "Matchers/DependencyMatcher.swift",
        "Matchers/EndsWithMatcher.swift",
        "Matchers/EqualToBooleanMatcher.swift",
        "Matchers/EqualToMatcher.swift",
        "Matchers/EqualToSetMatcher.swift",
        "Matchers/GreaterThanOrEqualToMatcher.swift",
        "Matchers/InRuleBasedSegmentMatcher.swift",
        "Matchers/InSegmentMatcher.swift",
        "Matchers/LessThanOrEqualToMatcher.swift",
        "Matchers/MatchesStringMatcher.swift",
        "Matchers/PartOfSetMatcher.swift",
        "Matchers/PrerequisitesMatcher.swift",
        "Matchers/Semver/BetweenSemverMatcher.swift",
        "Matchers/Semver/EqualToSemverMatcher.swift",
        "Matchers/Semver/GreaterThanOrEqualToSemverMatcher.swift",
        "Matchers/Semver/InListSemverMatcher.swift",
        "Matchers/Semver/LessThanOrEqualToSemverMatcher.swift",
        "Matchers/Semver/Semver.swift",
        "Matchers/StartWithMatcher.swift",
        "Matchers/Whitelist.swift",
        "Models/BetweenMatcherData.swift",
        "Models/BetweenStringMatcherData.swift",
        "Models/Condition.swift",
        "Models/ConditionType.swift",
        "Models/DataType.swift",
        "Models/DependencyMatcherData.swift",
        "Models/Extensions/SplitModels+StringConvertible.swift",
        "Models/Key.swift",
        "Models/KeySelector.swift",
        "Models/Matcher.swift",
        "Models/MatcherCombiner.swift",
        "Models/MatcherGroup.swift",
        "Models/MatcherProtocol.swift",
        "Models/MatcherType.swift",
        "Models/Segment.swift",
        "Models/SplitModel/RuleBasedSegmentChange.swift",
        "Models/SplitModel/Split.swift",
        "Models/SplitModel/SplitBase.swift",
        "Models/SplitModel/SplitChange.swift",
        "Models/SplitModel/TargetingRulesChange.swift",
        "Models/SplitModel/TargetingRulesChangeDecoder.swift",
        "Models/Status.swift",
        "Models/TrafficType.swift",
        "Models/Treatment.swift",
        "Models/UnaryNumericMatcherData.swift",
        "Models/UserDefinedSegmentMatcherData.swift",
        "Models/WhitelistMatcherData.swift",
        "Network/Configuration/RestClientConfiguration.swift",
        "Network/DataParsing/Json.swift",
        "Network/Endpoints/Endpoint.swift",
        "Network/Endpoints/EndpointFactory.swift",
        "Network/Endpoints/ServiceEndpoints.swift",
        "Network/Errors/GenericError.swift",
        "Network/HttpClient/HttpClient.swift",
        "Network/HttpClient/HttpDataRequest.swift",
        "Network/HttpClient/HttpDataResponse.swift",
        "Network/HttpClient/HttpError.swift",
        "Network/HttpClient/HttpParameter.swift",
        "Network/HttpClient/HttpParameters.swift",
        "Network/HttpClient/HttpRequest.swift",
        "Network/HttpClient/HttpRequestList.swift",
        "Network/HttpClient/HttpRequestManager.swift",
        "Network/HttpClient/HttpResponse.swift",
        "Network/HttpClient/HttpSession.swift",
        "Network/HttpClient/HttpStreamRequest.swift",
        "Network/HttpClient/HttpStreamResponse.swift",
        "Network/HttpClient/HttpTask.swift",
        "Network/HttpClient/OutdatedSplitProxyHandler.swift",
        "Network/NetworkReachabilityManager.swift",
        "Network/RestClient/RestClient+Impressions.swift",
        "Network/RestClient/RestClient+ImpressionsCount.swift",
        "Network/RestClient/RestClient+MySegments.swift",
        "Network/RestClient/RestClient+SplitChanges.swift",
        "Network/RestClient/RestClient+SseAuthenticator.swift",
        "Network/RestClient/RestClient+TelemetryConfig.swift",
        "Network/RestClient/RestClient+TelemetryStats.swift",
        "Network/RestClient/RestClient+TrackEvents.swift",
        "Network/RestClient/RestClient+UniqueKeys.swift",
        "Network/RestClient/RestClient.swift",
        "Network/Results/AllSegmentsChange.swift",
        "Network/Results/DataResult.swift",
        "Network/Results/SegmentsChange.swift",
        "Network/Security/HostDomainFilter.swift",
        "Network/Security/PublicKeyHeaders.swift",
        "Network/Security/TlsPinChecker.swift",
        "Network/Streaming/BackoffCounterTimer.swift",
        "Network/Streaming/DefaultSseNotificationParser.swift",
        "Network/Streaming/EventStreamParser.swift",
        "Network/Streaming/FeatureFlagsPayloadDecoder.swift",
        "Network/Streaming/JwtTokenParser.swift",
        "Network/Streaming/MySegmentsPayloadDecoder.swift",
        "Network/Streaming/NotificationManagerKeeper.swift",
        "Network/Streaming/PushNotificationManager.swift",
        "Network/Streaming/ReconnectBackoffCounter.swift",
        "Network/Streaming/RetryableSplitsUpdateWorkerFactory.swift",
        "Network/Streaming/SegmentsPayloadDecoder.swift",
        "Network/Streaming/SseAuthenticator.swift",
        "Network/Streaming/SseClient.swift",
        "Network/Streaming/SseClientFactory.swift",
        "Network/Streaming/SseConnectionHandler.swift",
        "Network/Streaming/SseHandler.swift",
        "Network/Streaming/SseNotificationProcessor.swift",
        "Network/Streaming/SseNotifications.swift",
        "Network/Streaming/SyncEventBroadcaster.swift",
        "Network/Streaming/SyncSegmentsUpdateWorker.swift",
        "Network/Streaming/SyncUpdateWorker.swift",
        "Network/Streaming/Timers.swift",
        "Network/Sync/ByKeyFacade.swift",
        "Network/Sync/EventsSynchronizer.swift",
        "Network/Sync/FeatureFlagsSynchronizer.swift",
        "Network/Sync/ImpressionsTracker.swift",
        "Network/Sync/MySegmentsSynchronizer.swift",
        "Network/Sync/SyncCommons.swift",
        "Network/Sync/SyncGuardian.swift",
        "Network/Sync/SyncManager.swift",
        "Network/Sync/SyncManagerBuilder.swift",
        "Network/Sync/Synchronizer.swift",
        "Network/Sync/TelemetrySynchronizer.swift",
        "Network/Sync/UniqueKeyTracker.swift",
        "Secure/SecureDataStore.swift",
        "Storage/Attributes/AttributeEntity.swift",
        "Storage/Attributes/AttributeMap.swift",
        "Storage/Attributes/AttributesDao.swift",
        "Storage/Attributes/AttributesStorage.swift",
        "Storage/Attributes/ByKeyAttributesStorage.swift",
        "Storage/Attributes/OneKeyAttributesStorage.swift",
        "Storage/Attributes/OneKeyPersistentAttributesStorage.swift",
        "Storage/Attributes/PersistentAttributesStorage.swift",
        "Storage/CoreDataContextBuilder.swift",
        "Storage/CoreDataHelper.swift",
        "Storage/DefaultFileStorage.swift",
        "Storage/Events/EventDao.swift",
        "Storage/Events/EventEntity.swift",
        "Storage/Events/EventsStorage.swift",
        "Storage/Events/PersistentEventsStorage.swift",
        "Storage/FileStorage.swift",
        "Storage/GeneralInfo/GeneralInfoDao.swift",
        "Storage/GeneralInfo/GeneralInfoEntity.swift",
        "Storage/GeneralInfo/GeneralInfoStorage.swift",
        "Storage/Global/GlobalSecureStorage.swift",
        "Storage/Global/KeyValueStorage.swift",
        "Storage/HashedImpression/HashedImpressionDao.swift",
        "Storage/HashedImpression/HashedImpressionEntity.swift",
        "Storage/HashedImpression/HashedImpressionStorage.swift",
        "Storage/HashedImpression/PersistentHashedImpressionsStorage.swift",
        "Storage/Impressions/ImpressionDao.swift",
        "Storage/Impressions/ImpressionEntity.swift",
        "Storage/Impressions/ImpressionsCountDao.swift",
        "Storage/Impressions/ImpressionsMode.swift",
        "Storage/Impressions/ImpressionsStorage.swift",
        "Storage/Impressions/PersistentImpressionsCountStorage.swift",
        "Storage/Impressions/PersistentImpressionsStorage.swift",
        "Storage/LegacyStorageCleaner.swift",
        "Storage/MySegments/ByKeyMySegmentsStorage.swift",
        "Storage/MySegments/MyLargeSegmentsStorage.swift",
        "Storage/MySegments/MySegmentEntity.swift",
        "Storage/MySegments/MySegmentsDao.swift",
        "Storage/MySegments/MySegmentsStorage.swift",
        "Storage/MySegments/PersistentMySegmentsStorage.swift",
        "Storage/RolloutDefinitionsCache.swift",
        "Storage/RuleBasedSegments/PersistentRuleBasedSegmentsStorage.swift",
        "Storage/RuleBasedSegments/ProcessedRuleBasedSegmentChange.swift",
        "Storage/RuleBasedSegments/RuleBasedSegment.swift",
        "Storage/RuleBasedSegments/RuleBasedSegmentDao.swift",
        "Storage/RuleBasedSegments/RuleBasedSegmentEntity.swift",
        "Storage/RuleBasedSegments/RuleBasedSegmentsDecoder.swift",
        "Storage/RuleBasedSegments/RuleBasedSegmentsEncoder.swift",
        "Storage/RuleBasedSegments/RuleBasedSegmentsStorage.swift",
        "Storage/SplitDatabase.swift",
        "Storage/Splits/FlagSetsCache.swift",
        "Storage/Splits/PersistentSplitsStorage.swift",
        "Storage/Splits/ProcessedSplitChange.swift",
        "Storage/Splits/SplitDao.swift",
        "Storage/Splits/SplitEntity.swift",
        "Storage/Splits/SplitsDecoder.swift",
        "Storage/Splits/SplitsEncoder.swift",
        "Storage/Splits/SplitsSnapshot.swift",
        "Storage/Splits/SplitsStorage.swift",
        "Storage/StorageHelper.swift",
        "Storage/UniqueKeys/PersistentUniqueKeysStorage.swift",
        "Storage/UniqueKeys/UniqueKeyDao.swift",
        "Storage/UniqueKeys/UniqueKeyEntity.swift",
        "Telemetry/LatencyCounter.swift",
        "Telemetry/Storage/TelemetryConfig.swift",
        "Telemetry/Storage/TelemetryInMemoryStorage.swift",
        "Telemetry/Storage/TelemetryStats.swift",
        "Telemetry/Storage/TelemetryStorage.swift",
        "Track/Models/EventDTO.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.3"
}
Done.