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 3.3.1-rc2 (77352e), with Swift 6.1 for macOS (SPM) on 11 Jun 2025 00:04:59 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

 23 |
 24 |     private let mySegmentsStorage: ByKeyMySegmentsStorage
    :
 79 |         }
 80 |         DispatchQueue.general.async { [weak self] in
 81 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultMySegmentsSynchronizer?' in a '@Sendable' closure
 82 |             self.mySegmentsStorage.loadLocal()
 83 |             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 |     }
[350/360] Compiling Split EventsSynchronizer.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:221:13: warning: capture of 'self' with non-sendable type 'SplitKillWorker' in a '@Sendable' closure
206 | }
207 |
208 | class SplitKillWorker: UpdateWorker<SplitKillNotification> {
    |       `- note: class 'SplitKillWorker' does not conform to the 'Sendable' protocol
209 |
210 |     private let synchronizer: Synchronizer
    :
219 |     override func process(notification: SplitKillNotification) throws {
220 |         processQueue.async {
221 |             self.process(notification)
    |             `- warning: capture of 'self' with non-sendable type 'SplitKillWorker' in a '@Sendable' closure
222 |         }
223 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/FeatureFlagsSynchronizer.swift:84:13: 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
    :
 82 |         DispatchQueue.general.async {
 83 |             let start = Date.nowMillis()
 84 |             self.filterSplitsInCache()
    |             `- warning: capture of 'self' with non-sendable type 'DefaultFeatureFlagsSynchronizer' in a '@Sendable' closure
 85 |             splitsStorage.loadLocal()
 86 |             if splitsStorage.getAll().count > 0 {
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/FeatureFlagsSynchronizer.swift:85:13: warning: capture of 'splitsStorage' with non-sendable type 'any SplitsStorage' in a '@Sendable' closure
 83 |             let start = Date.nowMillis()
 84 |             self.filterSplitsInCache()
 85 |             splitsStorage.loadLocal()
    |             `- warning: capture of 'splitsStorage' with non-sendable type 'any SplitsStorage' in a '@Sendable' closure
 86 |             if splitsStorage.getAll().count > 0 {
 87 |                 self.splitEventsManager.notifyInternalEvent(.splitsLoadedFromCache)
/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/MySegmentsSynchronizer.swift:81:30: warning: capture of 'self' with non-sendable type 'DefaultMySegmentsSynchronizer?' in a '@Sendable' closure
 20 | }
 21 |
 22 | class DefaultMySegmentsSynchronizer: MySegmentsSynchronizer {
    |       `- note: class 'DefaultMySegmentsSynchronizer' does not conform to the 'Sendable' protocol
 23 |
 24 |     private let mySegmentsStorage: ByKeyMySegmentsStorage
    :
 79 |         }
 80 |         DispatchQueue.general.async { [weak self] in
 81 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultMySegmentsSynchronizer?' in a '@Sendable' closure
 82 |             self.mySegmentsStorage.loadLocal()
 83 |             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 |     }
[351/360] Compiling Split FeatureFlagsSynchronizer.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:221:13: warning: capture of 'self' with non-sendable type 'SplitKillWorker' in a '@Sendable' closure
206 | }
207 |
208 | class SplitKillWorker: UpdateWorker<SplitKillNotification> {
    |       `- note: class 'SplitKillWorker' does not conform to the 'Sendable' protocol
209 |
210 |     private let synchronizer: Synchronizer
    :
219 |     override func process(notification: SplitKillNotification) throws {
220 |         processQueue.async {
221 |             self.process(notification)
    |             `- warning: capture of 'self' with non-sendable type 'SplitKillWorker' in a '@Sendable' closure
222 |         }
223 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/FeatureFlagsSynchronizer.swift:84:13: 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
    :
 82 |         DispatchQueue.general.async {
 83 |             let start = Date.nowMillis()
 84 |             self.filterSplitsInCache()
    |             `- warning: capture of 'self' with non-sendable type 'DefaultFeatureFlagsSynchronizer' in a '@Sendable' closure
 85 |             splitsStorage.loadLocal()
 86 |             if splitsStorage.getAll().count > 0 {
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/FeatureFlagsSynchronizer.swift:85:13: warning: capture of 'splitsStorage' with non-sendable type 'any SplitsStorage' in a '@Sendable' closure
 83 |             let start = Date.nowMillis()
 84 |             self.filterSplitsInCache()
 85 |             splitsStorage.loadLocal()
    |             `- warning: capture of 'splitsStorage' with non-sendable type 'any SplitsStorage' in a '@Sendable' closure
 86 |             if splitsStorage.getAll().count > 0 {
 87 |                 self.splitEventsManager.notifyInternalEvent(.splitsLoadedFromCache)
/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/MySegmentsSynchronizer.swift:81:30: warning: capture of 'self' with non-sendable type 'DefaultMySegmentsSynchronizer?' in a '@Sendable' closure
 20 | }
 21 |
 22 | class DefaultMySegmentsSynchronizer: MySegmentsSynchronizer {
    |       `- note: class 'DefaultMySegmentsSynchronizer' does not conform to the 'Sendable' protocol
 23 |
 24 |     private let mySegmentsStorage: ByKeyMySegmentsStorage
    :
 79 |         }
 80 |         DispatchQueue.general.async { [weak self] in
 81 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultMySegmentsSynchronizer?' in a '@Sendable' closure
 82 |             self.mySegmentsStorage.loadLocal()
 83 |             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 |     }
[352/360] Compiling Split ImpressionsTracker.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:221:13: warning: capture of 'self' with non-sendable type 'SplitKillWorker' in a '@Sendable' closure
206 | }
207 |
208 | class SplitKillWorker: UpdateWorker<SplitKillNotification> {
    |       `- note: class 'SplitKillWorker' does not conform to the 'Sendable' protocol
209 |
210 |     private let synchronizer: Synchronizer
    :
219 |     override func process(notification: SplitKillNotification) throws {
220 |         processQueue.async {
221 |             self.process(notification)
    |             `- warning: capture of 'self' with non-sendable type 'SplitKillWorker' in a '@Sendable' closure
222 |         }
223 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/FeatureFlagsSynchronizer.swift:84:13: 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
    :
 82 |         DispatchQueue.general.async {
 83 |             let start = Date.nowMillis()
 84 |             self.filterSplitsInCache()
    |             `- warning: capture of 'self' with non-sendable type 'DefaultFeatureFlagsSynchronizer' in a '@Sendable' closure
 85 |             splitsStorage.loadLocal()
 86 |             if splitsStorage.getAll().count > 0 {
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/FeatureFlagsSynchronizer.swift:85:13: warning: capture of 'splitsStorage' with non-sendable type 'any SplitsStorage' in a '@Sendable' closure
 83 |             let start = Date.nowMillis()
 84 |             self.filterSplitsInCache()
 85 |             splitsStorage.loadLocal()
    |             `- warning: capture of 'splitsStorage' with non-sendable type 'any SplitsStorage' in a '@Sendable' closure
 86 |             if splitsStorage.getAll().count > 0 {
 87 |                 self.splitEventsManager.notifyInternalEvent(.splitsLoadedFromCache)
/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/MySegmentsSynchronizer.swift:81:30: warning: capture of 'self' with non-sendable type 'DefaultMySegmentsSynchronizer?' in a '@Sendable' closure
 20 | }
 21 |
 22 | class DefaultMySegmentsSynchronizer: MySegmentsSynchronizer {
    |       `- note: class 'DefaultMySegmentsSynchronizer' does not conform to the 'Sendable' protocol
 23 |
 24 |     private let mySegmentsStorage: ByKeyMySegmentsStorage
    :
 79 |         }
 80 |         DispatchQueue.general.async { [weak self] in
 81 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultMySegmentsSynchronizer?' in a '@Sendable' closure
 82 |             self.mySegmentsStorage.loadLocal()
 83 |             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 |     }
[353/360] Compiling Split MySegmentsSynchronizer.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:221:13: warning: capture of 'self' with non-sendable type 'SplitKillWorker' in a '@Sendable' closure
206 | }
207 |
208 | class SplitKillWorker: UpdateWorker<SplitKillNotification> {
    |       `- note: class 'SplitKillWorker' does not conform to the 'Sendable' protocol
209 |
210 |     private let synchronizer: Synchronizer
    :
219 |     override func process(notification: SplitKillNotification) throws {
220 |         processQueue.async {
221 |             self.process(notification)
    |             `- warning: capture of 'self' with non-sendable type 'SplitKillWorker' in a '@Sendable' closure
222 |         }
223 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/FeatureFlagsSynchronizer.swift:84:13: 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
    :
 82 |         DispatchQueue.general.async {
 83 |             let start = Date.nowMillis()
 84 |             self.filterSplitsInCache()
    |             `- warning: capture of 'self' with non-sendable type 'DefaultFeatureFlagsSynchronizer' in a '@Sendable' closure
 85 |             splitsStorage.loadLocal()
 86 |             if splitsStorage.getAll().count > 0 {
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/FeatureFlagsSynchronizer.swift:85:13: warning: capture of 'splitsStorage' with non-sendable type 'any SplitsStorage' in a '@Sendable' closure
 83 |             let start = Date.nowMillis()
 84 |             self.filterSplitsInCache()
 85 |             splitsStorage.loadLocal()
    |             `- warning: capture of 'splitsStorage' with non-sendable type 'any SplitsStorage' in a '@Sendable' closure
 86 |             if splitsStorage.getAll().count > 0 {
 87 |                 self.splitEventsManager.notifyInternalEvent(.splitsLoadedFromCache)
/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/MySegmentsSynchronizer.swift:81:30: warning: capture of 'self' with non-sendable type 'DefaultMySegmentsSynchronizer?' in a '@Sendable' closure
 20 | }
 21 |
 22 | class DefaultMySegmentsSynchronizer: MySegmentsSynchronizer {
    |       `- note: class 'DefaultMySegmentsSynchronizer' does not conform to the 'Sendable' protocol
 23 |
 24 |     private let mySegmentsStorage: ByKeyMySegmentsStorage
    :
 79 |         }
 80 |         DispatchQueue.general.async { [weak self] in
 81 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultMySegmentsSynchronizer?' in a '@Sendable' closure
 82 |             self.mySegmentsStorage.loadLocal()
 83 |             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 |     }
[354/360] Compiling Split SyncCommons.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:221:13: warning: capture of 'self' with non-sendable type 'SplitKillWorker' in a '@Sendable' closure
206 | }
207 |
208 | class SplitKillWorker: UpdateWorker<SplitKillNotification> {
    |       `- note: class 'SplitKillWorker' does not conform to the 'Sendable' protocol
209 |
210 |     private let synchronizer: Synchronizer
    :
219 |     override func process(notification: SplitKillNotification) throws {
220 |         processQueue.async {
221 |             self.process(notification)
    |             `- warning: capture of 'self' with non-sendable type 'SplitKillWorker' in a '@Sendable' closure
222 |         }
223 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/FeatureFlagsSynchronizer.swift:84:13: 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
    :
 82 |         DispatchQueue.general.async {
 83 |             let start = Date.nowMillis()
 84 |             self.filterSplitsInCache()
    |             `- warning: capture of 'self' with non-sendable type 'DefaultFeatureFlagsSynchronizer' in a '@Sendable' closure
 85 |             splitsStorage.loadLocal()
 86 |             if splitsStorage.getAll().count > 0 {
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/FeatureFlagsSynchronizer.swift:85:13: warning: capture of 'splitsStorage' with non-sendable type 'any SplitsStorage' in a '@Sendable' closure
 83 |             let start = Date.nowMillis()
 84 |             self.filterSplitsInCache()
 85 |             splitsStorage.loadLocal()
    |             `- warning: capture of 'splitsStorage' with non-sendable type 'any SplitsStorage' in a '@Sendable' closure
 86 |             if splitsStorage.getAll().count > 0 {
 87 |                 self.splitEventsManager.notifyInternalEvent(.splitsLoadedFromCache)
/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/MySegmentsSynchronizer.swift:81:30: warning: capture of 'self' with non-sendable type 'DefaultMySegmentsSynchronizer?' in a '@Sendable' closure
 20 | }
 21 |
 22 | class DefaultMySegmentsSynchronizer: MySegmentsSynchronizer {
    |       `- note: class 'DefaultMySegmentsSynchronizer' does not conform to the 'Sendable' protocol
 23 |
 24 |     private let mySegmentsStorage: ByKeyMySegmentsStorage
    :
 79 |         }
 80 |         DispatchQueue.general.async { [weak self] in
 81 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultMySegmentsSynchronizer?' in a '@Sendable' closure
 82 |             self.mySegmentsStorage.loadLocal()
 83 |             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 |     }
[355/360] Compiling Split SyncGuardian.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:221:13: warning: capture of 'self' with non-sendable type 'SplitKillWorker' in a '@Sendable' closure
206 | }
207 |
208 | class SplitKillWorker: UpdateWorker<SplitKillNotification> {
    |       `- note: class 'SplitKillWorker' does not conform to the 'Sendable' protocol
209 |
210 |     private let synchronizer: Synchronizer
    :
219 |     override func process(notification: SplitKillNotification) throws {
220 |         processQueue.async {
221 |             self.process(notification)
    |             `- warning: capture of 'self' with non-sendable type 'SplitKillWorker' in a '@Sendable' closure
222 |         }
223 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/FeatureFlagsSynchronizer.swift:84:13: 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
    :
 82 |         DispatchQueue.general.async {
 83 |             let start = Date.nowMillis()
 84 |             self.filterSplitsInCache()
    |             `- warning: capture of 'self' with non-sendable type 'DefaultFeatureFlagsSynchronizer' in a '@Sendable' closure
 85 |             splitsStorage.loadLocal()
 86 |             if splitsStorage.getAll().count > 0 {
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/FeatureFlagsSynchronizer.swift:85:13: warning: capture of 'splitsStorage' with non-sendable type 'any SplitsStorage' in a '@Sendable' closure
 83 |             let start = Date.nowMillis()
 84 |             self.filterSplitsInCache()
 85 |             splitsStorage.loadLocal()
    |             `- warning: capture of 'splitsStorage' with non-sendable type 'any SplitsStorage' in a '@Sendable' closure
 86 |             if splitsStorage.getAll().count > 0 {
 87 |                 self.splitEventsManager.notifyInternalEvent(.splitsLoadedFromCache)
/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/MySegmentsSynchronizer.swift:81:30: warning: capture of 'self' with non-sendable type 'DefaultMySegmentsSynchronizer?' in a '@Sendable' closure
 20 | }
 21 |
 22 | class DefaultMySegmentsSynchronizer: MySegmentsSynchronizer {
    |       `- note: class 'DefaultMySegmentsSynchronizer' does not conform to the 'Sendable' protocol
 23 |
 24 |     private let mySegmentsStorage: ByKeyMySegmentsStorage
    :
 79 |         }
 80 |         DispatchQueue.general.async { [weak self] in
 81 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultMySegmentsSynchronizer?' in a '@Sendable' closure
 82 |             self.mySegmentsStorage.loadLocal()
 83 |             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 |     }
[356/360] Compiling Split SyncManager.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:221:13: warning: capture of 'self' with non-sendable type 'SplitKillWorker' in a '@Sendable' closure
206 | }
207 |
208 | class SplitKillWorker: UpdateWorker<SplitKillNotification> {
    |       `- note: class 'SplitKillWorker' does not conform to the 'Sendable' protocol
209 |
210 |     private let synchronizer: Synchronizer
    :
219 |     override func process(notification: SplitKillNotification) throws {
220 |         processQueue.async {
221 |             self.process(notification)
    |             `- warning: capture of 'self' with non-sendable type 'SplitKillWorker' in a '@Sendable' closure
222 |         }
223 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/FeatureFlagsSynchronizer.swift:84:13: 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
    :
 82 |         DispatchQueue.general.async {
 83 |             let start = Date.nowMillis()
 84 |             self.filterSplitsInCache()
    |             `- warning: capture of 'self' with non-sendable type 'DefaultFeatureFlagsSynchronizer' in a '@Sendable' closure
 85 |             splitsStorage.loadLocal()
 86 |             if splitsStorage.getAll().count > 0 {
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/FeatureFlagsSynchronizer.swift:85:13: warning: capture of 'splitsStorage' with non-sendable type 'any SplitsStorage' in a '@Sendable' closure
 83 |             let start = Date.nowMillis()
 84 |             self.filterSplitsInCache()
 85 |             splitsStorage.loadLocal()
    |             `- warning: capture of 'splitsStorage' with non-sendable type 'any SplitsStorage' in a '@Sendable' closure
 86 |             if splitsStorage.getAll().count > 0 {
 87 |                 self.splitEventsManager.notifyInternalEvent(.splitsLoadedFromCache)
/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/MySegmentsSynchronizer.swift:81:30: warning: capture of 'self' with non-sendable type 'DefaultMySegmentsSynchronizer?' in a '@Sendable' closure
 20 | }
 21 |
 22 | class DefaultMySegmentsSynchronizer: MySegmentsSynchronizer {
    |       `- note: class 'DefaultMySegmentsSynchronizer' does not conform to the 'Sendable' protocol
 23 |
 24 |     private let mySegmentsStorage: ByKeyMySegmentsStorage
    :
 79 |         }
 80 |         DispatchQueue.general.async { [weak self] in
 81 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultMySegmentsSynchronizer?' in a '@Sendable' closure
 82 |             self.mySegmentsStorage.loadLocal()
 83 |             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 |     }
[357/360] 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:221:13: warning: capture of 'self' with non-sendable type 'SplitKillWorker' in a '@Sendable' closure
206 | }
207 |
208 | class SplitKillWorker: UpdateWorker<SplitKillNotification> {
    |       `- note: class 'SplitKillWorker' does not conform to the 'Sendable' protocol
209 |
210 |     private let synchronizer: Synchronizer
    :
219 |     override func process(notification: SplitKillNotification) throws {
220 |         processQueue.async {
221 |             self.process(notification)
    |             `- warning: capture of 'self' with non-sendable type 'SplitKillWorker' in a '@Sendable' closure
222 |         }
223 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/FeatureFlagsSynchronizer.swift:84:13: 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
    :
 82 |         DispatchQueue.general.async {
 83 |             let start = Date.nowMillis()
 84 |             self.filterSplitsInCache()
    |             `- warning: capture of 'self' with non-sendable type 'DefaultFeatureFlagsSynchronizer' in a '@Sendable' closure
 85 |             splitsStorage.loadLocal()
 86 |             if splitsStorage.getAll().count > 0 {
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/FeatureFlagsSynchronizer.swift:85:13: warning: capture of 'splitsStorage' with non-sendable type 'any SplitsStorage' in a '@Sendable' closure
 83 |             let start = Date.nowMillis()
 84 |             self.filterSplitsInCache()
 85 |             splitsStorage.loadLocal()
    |             `- warning: capture of 'splitsStorage' with non-sendable type 'any SplitsStorage' in a '@Sendable' closure
 86 |             if splitsStorage.getAll().count > 0 {
 87 |                 self.splitEventsManager.notifyInternalEvent(.splitsLoadedFromCache)
/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/MySegmentsSynchronizer.swift:81:30: warning: capture of 'self' with non-sendable type 'DefaultMySegmentsSynchronizer?' in a '@Sendable' closure
 20 | }
 21 |
 22 | class DefaultMySegmentsSynchronizer: MySegmentsSynchronizer {
    |       `- note: class 'DefaultMySegmentsSynchronizer' does not conform to the 'Sendable' protocol
 23 |
 24 |     private let mySegmentsStorage: ByKeyMySegmentsStorage
    :
 79 |         }
 80 |         DispatchQueue.general.async { [weak self] in
 81 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultMySegmentsSynchronizer?' in a '@Sendable' closure
 82 |             self.mySegmentsStorage.loadLocal()
 83 |             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 |     }
[358/360] 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:221:13: warning: capture of 'self' with non-sendable type 'SplitKillWorker' in a '@Sendable' closure
206 | }
207 |
208 | class SplitKillWorker: UpdateWorker<SplitKillNotification> {
    |       `- note: class 'SplitKillWorker' does not conform to the 'Sendable' protocol
209 |
210 |     private let synchronizer: Synchronizer
    :
219 |     override func process(notification: SplitKillNotification) throws {
220 |         processQueue.async {
221 |             self.process(notification)
    |             `- warning: capture of 'self' with non-sendable type 'SplitKillWorker' in a '@Sendable' closure
222 |         }
223 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/FeatureFlagsSynchronizer.swift:84:13: 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
    :
 82 |         DispatchQueue.general.async {
 83 |             let start = Date.nowMillis()
 84 |             self.filterSplitsInCache()
    |             `- warning: capture of 'self' with non-sendable type 'DefaultFeatureFlagsSynchronizer' in a '@Sendable' closure
 85 |             splitsStorage.loadLocal()
 86 |             if splitsStorage.getAll().count > 0 {
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/FeatureFlagsSynchronizer.swift:85:13: warning: capture of 'splitsStorage' with non-sendable type 'any SplitsStorage' in a '@Sendable' closure
 83 |             let start = Date.nowMillis()
 84 |             self.filterSplitsInCache()
 85 |             splitsStorage.loadLocal()
    |             `- warning: capture of 'splitsStorage' with non-sendable type 'any SplitsStorage' in a '@Sendable' closure
 86 |             if splitsStorage.getAll().count > 0 {
 87 |                 self.splitEventsManager.notifyInternalEvent(.splitsLoadedFromCache)
/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/MySegmentsSynchronizer.swift:81:30: warning: capture of 'self' with non-sendable type 'DefaultMySegmentsSynchronizer?' in a '@Sendable' closure
 20 | }
 21 |
 22 | class DefaultMySegmentsSynchronizer: MySegmentsSynchronizer {
    |       `- note: class 'DefaultMySegmentsSynchronizer' does not conform to the 'Sendable' protocol
 23 |
 24 |     private let mySegmentsStorage: ByKeyMySegmentsStorage
    :
 79 |         }
 80 |         DispatchQueue.general.async { [weak self] in
 81 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultMySegmentsSynchronizer?' in a '@Sendable' closure
 82 |             self.mySegmentsStorage.loadLocal()
 83 |             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 |     }
[359/360] 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:221:13: warning: capture of 'self' with non-sendable type 'SplitKillWorker' in a '@Sendable' closure
206 | }
207 |
208 | class SplitKillWorker: UpdateWorker<SplitKillNotification> {
    |       `- note: class 'SplitKillWorker' does not conform to the 'Sendable' protocol
209 |
210 |     private let synchronizer: Synchronizer
    :
219 |     override func process(notification: SplitKillNotification) throws {
220 |         processQueue.async {
221 |             self.process(notification)
    |             `- warning: capture of 'self' with non-sendable type 'SplitKillWorker' in a '@Sendable' closure
222 |         }
223 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/FeatureFlagsSynchronizer.swift:84:13: 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
    :
 82 |         DispatchQueue.general.async {
 83 |             let start = Date.nowMillis()
 84 |             self.filterSplitsInCache()
    |             `- warning: capture of 'self' with non-sendable type 'DefaultFeatureFlagsSynchronizer' in a '@Sendable' closure
 85 |             splitsStorage.loadLocal()
 86 |             if splitsStorage.getAll().count > 0 {
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/FeatureFlagsSynchronizer.swift:85:13: warning: capture of 'splitsStorage' with non-sendable type 'any SplitsStorage' in a '@Sendable' closure
 83 |             let start = Date.nowMillis()
 84 |             self.filterSplitsInCache()
 85 |             splitsStorage.loadLocal()
    |             `- warning: capture of 'splitsStorage' with non-sendable type 'any SplitsStorage' in a '@Sendable' closure
 86 |             if splitsStorage.getAll().count > 0 {
 87 |                 self.splitEventsManager.notifyInternalEvent(.splitsLoadedFromCache)
/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/MySegmentsSynchronizer.swift:81:30: warning: capture of 'self' with non-sendable type 'DefaultMySegmentsSynchronizer?' in a '@Sendable' closure
 20 | }
 21 |
 22 | class DefaultMySegmentsSynchronizer: MySegmentsSynchronizer {
    |       `- note: class 'DefaultMySegmentsSynchronizer' does not conform to the 'Sendable' protocol
 23 |
 24 |     private let mySegmentsStorage: ByKeyMySegmentsStorage
    :
 79 |         }
 80 |         DispatchQueue.general.async { [weak self] in
 81 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultMySegmentsSynchronizer?' in a '@Sendable' closure
 82 |             self.mySegmentsStorage.loadLocal()
 83 |             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 |     }
[360/360] 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:221:13: warning: capture of 'self' with non-sendable type 'SplitKillWorker' in a '@Sendable' closure
206 | }
207 |
208 | class SplitKillWorker: UpdateWorker<SplitKillNotification> {
    |       `- note: class 'SplitKillWorker' does not conform to the 'Sendable' protocol
209 |
210 |     private let synchronizer: Synchronizer
    :
219 |     override func process(notification: SplitKillNotification) throws {
220 |         processQueue.async {
221 |             self.process(notification)
    |             `- warning: capture of 'self' with non-sendable type 'SplitKillWorker' in a '@Sendable' closure
222 |         }
223 |     }
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/FeatureFlagsSynchronizer.swift:84:13: 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
    :
 82 |         DispatchQueue.general.async {
 83 |             let start = Date.nowMillis()
 84 |             self.filterSplitsInCache()
    |             `- warning: capture of 'self' with non-sendable type 'DefaultFeatureFlagsSynchronizer' in a '@Sendable' closure
 85 |             splitsStorage.loadLocal()
 86 |             if splitsStorage.getAll().count > 0 {
/Users/admin/builder/spi-builder-workspace/Split/Network/Sync/FeatureFlagsSynchronizer.swift:85:13: warning: capture of 'splitsStorage' with non-sendable type 'any SplitsStorage' in a '@Sendable' closure
 83 |             let start = Date.nowMillis()
 84 |             self.filterSplitsInCache()
 85 |             splitsStorage.loadLocal()
    |             `- warning: capture of 'splitsStorage' with non-sendable type 'any SplitsStorage' in a '@Sendable' closure
 86 |             if splitsStorage.getAll().count > 0 {
 87 |                 self.splitEventsManager.notifyInternalEvent(.splitsLoadedFromCache)
/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/MySegmentsSynchronizer.swift:81:30: warning: capture of 'self' with non-sendable type 'DefaultMySegmentsSynchronizer?' in a '@Sendable' closure
 20 | }
 21 |
 22 | class DefaultMySegmentsSynchronizer: MySegmentsSynchronizer {
    |       `- note: class 'DefaultMySegmentsSynchronizer' does not conform to the 'Sendable' protocol
 23 |
 24 |     private let mySegmentsStorage: ByKeyMySegmentsStorage
    :
 79 |         }
 80 |         DispatchQueue.general.async { [weak self] in
 81 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'DefaultMySegmentsSynchronizer?' in a '@Sendable' closure
 82 |             self.mySegmentsStorage.loadLocal()
 83 |             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 |     }
Build complete! (9.69s)
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/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.