The Swift Package Index logo.Swift Package Index

Track the adoption of Swift 6 strict concurrency checks for data race safety. How many packages are Ready for Swift 6?

Build Information

Successful build of OTPKit, reference 1.1.2 (159b1f), with Swift 6.1 for macOS (SPM) on 27 Apr 2025 16:52:35 UTC.

Swift 6 data race errors: 11

Build Command

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

Build Log

1668 |
1669 |
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/ProducerConsumer.swift:36:8: note: consider making struct 'ProducerConsumer' conform to the 'Sendable' protocol
 34 | */
 35 |
 36 | struct ProducerConsumer: Equatable {
    |        `- note: consider making struct 'ProducerConsumer' conform to the 'Sendable' protocol
 37 |
 38 |     /// A globally unique identifier (UUID) representing the consumer, compliant with RFC 4122.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1673:47: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1671 |
1672 |                         // notify the debug delegate
1673 |                         delegateQueue.async { self.debugDelegate?.debugLog("Received name advertisement message from \(otpLayer.componentName) \(otpLayer.cid)") }
     |                                               `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1674 |
1675 |                     case .system:
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1721:60: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1719 |
1720 |                                 // notify the delegate of the consumer status
1721 |                                 self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: consumer.cid, ipMode: existingComponentIPMode, ipAddresses: newIpAddresses, sequenceErrors: consumer.sequenceErrors, state: notifiedState, moduleIdentifiers: moduleIdentifiers)) }
     |                                                            `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1722 |
1723 |                                 // update both name and ip when this happens
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1721:158: warning: capture of 'consumer' with non-sendable type 'ProducerConsumer' in a '@Sendable' closure
1719 |
1720 |                                 // notify the delegate of the consumer status
1721 |                                 self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: consumer.cid, ipMode: existingComponentIPMode, ipAddresses: newIpAddresses, sequenceErrors: consumer.sequenceErrors, state: notifiedState, moduleIdentifiers: moduleIdentifiers)) }
     |                                                                                                                                                              `- warning: capture of 'consumer' with non-sendable type 'ProducerConsumer' in a '@Sendable' closure
1722 |
1723 |                                 // update both name and ip when this happens
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/ProducerConsumer.swift:36:8: note: consider making struct 'ProducerConsumer' conform to the 'Sendable' protocol
 34 | */
 35 |
 36 | struct ProducerConsumer: Equatable {
    |        `- note: consider making struct 'ProducerConsumer' conform to the 'Sendable' protocol
 37 |
 38 |     /// A globally unique identifier (UUID) representing the consumer, compliant with RFC 4122.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1721:180: warning: capture of 'existingComponentIPMode' with non-sendable type 'OTPIPMode' in a '@Sendable' closure
1719 |
1720 |                                 // notify the delegate of the consumer status
1721 |                                 self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: consumer.cid, ipMode: existingComponentIPMode, ipAddresses: newIpAddresses, sequenceErrors: consumer.sequenceErrors, state: notifiedState, moduleIdentifiers: moduleIdentifiers)) }
     |                                                                                                                                                                                    `- warning: capture of 'existingComponentIPMode' with non-sendable type 'OTPIPMode' in a '@Sendable' closure
1722 |
1723 |                                 // update both name and ip when this happens
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Network/NetworkDefinitions.swift:60:13: note: consider making enum 'OTPIPMode' conform to the 'Sendable' protocol
 58 |
 59 | */
 60 | public enum OTPIPMode: String, CaseIterable {
    |             `- note: consider making enum 'OTPIPMode' conform to the 'Sendable' protocol
 61 |
 62 |     /// The `Component` should only use IPv4.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1721:282: warning: capture of 'notifiedState' with non-sendable type 'OTPComponentState' in a '@Sendable' closure
1719 |
1720 |                                 // notify the delegate of the consumer status
1721 |                                 self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: consumer.cid, ipMode: existingComponentIPMode, ipAddresses: newIpAddresses, sequenceErrors: consumer.sequenceErrors, state: notifiedState, moduleIdentifiers: moduleIdentifiers)) }
     |                                                                                                                                                                                                                                                                                          `- warning: capture of 'notifiedState' with non-sendable type 'OTPComponentState' in a '@Sendable' closure
1722 |
1723 |                                 // update both name and ip when this happens
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/ComponentStatus.swift:35:13: note: consider making enum 'OTPComponentState' conform to the 'Sendable' protocol
 33 |
 34 | */
 35 | public enum OTPComponentState: String {
    |             `- note: consider making enum 'OTPComponentState' conform to the 'Sendable' protocol
 36 |
 37 |     /// This component is offline.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1721:316: warning: capture of 'moduleIdentifiers' with non-sendable type '[OTPModuleIdentifier]' in a '@Sendable' closure
1719 |
1720 |                                 // notify the delegate of the consumer status
1721 |                                 self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: consumer.cid, ipMode: existingComponentIPMode, ipAddresses: newIpAddresses, sequenceErrors: consumer.sequenceErrors, state: notifiedState, moduleIdentifiers: moduleIdentifiers)) }
     |                                                                                                                                                                                                                                                                                                                            `- warning: capture of 'moduleIdentifiers' with non-sendable type '[OTPModuleIdentifier]' in a '@Sendable' closure
1722 |
1723 |                                 // update both name and ip when this happens
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Types/ModuleIdentifier.swift:34:15: note: consider making struct 'OTPModuleIdentifier' conform to the 'Sendable' protocol
 32 | */
 33 |
 34 | public struct OTPModuleIdentifier: Comparable, Hashable {
    |               `- note: consider making struct 'OTPModuleIdentifier' conform to the 'Sendable' protocol
 35 |
 36 |     /**
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1738:56: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1736 |
1737 |                             // notify the delegate of the consumer status
1738 |                             self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: otpLayer.cid, ipMode: newComponentIPMode, ipAddresses: [hostname], sequenceErrors: consumer.sequenceErrors, state: .advertising, moduleIdentifiers: [])) }
     |                                                        `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1739 |
1740 |                         }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1738:176: warning: capture of 'newComponentIPMode' with non-sendable type 'OTPIPMode' in a '@Sendable' closure
1736 |
1737 |                             // notify the delegate of the consumer status
1738 |                             self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: otpLayer.cid, ipMode: newComponentIPMode, ipAddresses: [hostname], sequenceErrors: consumer.sequenceErrors, state: .advertising, moduleIdentifiers: [])) }
     |                                                                                                                                                                                `- warning: capture of 'newComponentIPMode' with non-sendable type 'OTPIPMode' in a '@Sendable' closure
1739 |
1740 |                         }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Network/NetworkDefinitions.swift:60:13: note: consider making enum 'OTPIPMode' conform to the 'Sendable' protocol
 58 |
 59 | */
 60 | public enum OTPIPMode: String, CaseIterable {
    |             `- note: consider making enum 'OTPIPMode' conform to the 'Sendable' protocol
 61 |
 62 |     /// The `Component` should only use IPv4.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1738:237: warning: capture of 'consumer' with non-sendable type 'ProducerConsumer' in a '@Sendable' closure
1736 |
1737 |                             // notify the delegate of the consumer status
1738 |                             self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: otpLayer.cid, ipMode: newComponentIPMode, ipAddresses: [hostname], sequenceErrors: consumer.sequenceErrors, state: .advertising, moduleIdentifiers: [])) }
     |                                                                                                                                                                                                                                             `- warning: capture of 'consumer' with non-sendable type 'ProducerConsumer' in a '@Sendable' closure
1739 |
1740 |                         }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/ProducerConsumer.swift:36:8: note: consider making struct 'ProducerConsumer' conform to the 'Sendable' protocol
 34 | */
 35 |
 36 | struct ProducerConsumer: Equatable {
    |        `- note: consider making struct 'ProducerConsumer' conform to the 'Sendable' protocol
 37 |
 38 |     /// A globally unique identifier (UUID) representing the consumer, compliant with RFC 4122.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1743:47: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1741 |
1742 |                         // notify the debug delegate
1743 |                         delegateQueue.async { self.debugDelegate?.debugLog("Received system advertisement message from \(otpLayer.componentName) \(otpLayer.cid)") }
     |                                               `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1744 |
1745 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1772:52: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1770 |
1771 |                         // notify the delegate
1772 |                         self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(consumerStatus) }
     |                                                    `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1773 |
1774 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1772:97: warning: capture of 'consumerStatus' with non-sendable type 'OTPConsumerStatus' in a '@Sendable' closure
1770 |
1771 |                         // notify the delegate
1772 |                         self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(consumerStatus) }
     |                                                                                                 `- warning: capture of 'consumerStatus' with non-sendable type 'OTPConsumerStatus' in a '@Sendable' closure
1773 |
1774 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/ComponentStatus.swift:143:15: note: consider making struct 'OTPConsumerStatus' conform to the 'Sendable' protocol
141 | */
142 |
143 | public struct OTPConsumerStatus: OTPComponentStatus {
    |               `- note: consider making struct 'OTPConsumerStatus' conform to the 'Sendable' protocol
144 |
145 |     /// A globally unique identifier (UUID) representing the consumer, compliant with RFC 4122.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1779:43: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1777 |
1778 |                     // there was an error in the otp layer
1779 |                     delegateQueue.async { self.protocolErrorDelegate?.layerError(error.logDescription) }
     |                                           `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1780 |
1781 |                 }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1786:39: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1784 |
1785 |                 // there was an error in the advertisement layer
1786 |                 delegateQueue.async { self.protocolErrorDelegate?.layerError(error.logDescription) }
     |                                       `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1787 |
1788 |             } catch let error as ModuleAdvertisementLayerValidationError {
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1791:39: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1789 |
1790 |                 // there was an error in the module advertisement layer
1791 |                 delegateQueue.async { self.protocolErrorDelegate?.layerError(error.logDescription) }
     |                                       `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1792 |
1793 |             } catch let error as SystemAdvertisementLayerValidationError {
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1796:39: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1794 |
1795 |                 // there was an error in the system advertisement layer
1796 |                 delegateQueue.async { self.protocolErrorDelegate?.layerError(error.logDescription) }
     |                                       `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1797 |
1798 |             } catch let error as NameAdvertisementLayerValidationError {
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1801:39: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1799 |
1800 |                 // there was an error in the name advertisement layer
1801 |                 delegateQueue.async { self.protocolErrorDelegate?.layerError(error.logDescription) }
     |                                       `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1802 |
1803 |             } catch let error as TransformLayerValidationError {
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1806:39: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1804 |
1805 |                 // there was an error in the transform layer
1806 |                 delegateQueue.async { self.protocolErrorDelegate?.layerError(error.logDescription) }
     |                                       `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1807 |
1808 |             } catch let error {
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1811:39: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1809 |
1810 |                 // there was an unknown error
1811 |                 delegateQueue.async { self.protocolErrorDelegate?.unknownError(error.localizedDescription) }
     |                                       `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1812 |
1813 |             }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1842:40: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1840 |
1841 |             // notify the delegate of the consumer status
1842 |             self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: consumer.name, cid: consumer.cid, ipMode: newIpMode, ipAddresses: newIpAddresses, sequenceErrors: consumer.sequenceErrors, state: consumer.notifiedState, moduleIdentifiers: consumer.moduleIdentifiers)) }
     |                                        `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1843 |
1844 |             self.consumers[index].ipAddresses = newIpAddresses
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1842:109: warning: capture of 'consumer' with non-sendable type 'ProducerConsumer' in a '@Sendable' closure
1840 |
1841 |             // notify the delegate of the consumer status
1842 |             self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: consumer.name, cid: consumer.cid, ipMode: newIpMode, ipAddresses: newIpAddresses, sequenceErrors: consumer.sequenceErrors, state: consumer.notifiedState, moduleIdentifiers: consumer.moduleIdentifiers)) }
     |                                                                                                             `- warning: capture of 'consumer' with non-sendable type 'ProducerConsumer' in a '@Sendable' closure
1843 |
1844 |             self.consumers[index].ipAddresses = newIpAddresses
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/ProducerConsumer.swift:36:8: note: consider making struct 'ProducerConsumer' conform to the 'Sendable' protocol
 34 | */
 35 |
 36 | struct ProducerConsumer: Equatable {
    |        `- note: consider making struct 'ProducerConsumer' conform to the 'Sendable' protocol
 37 |
 38 |     /// A globally unique identifier (UUID) representing the consumer, compliant with RFC 4122.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1842:151: warning: capture of 'newIpMode' with non-sendable type 'OTPIPMode' in a '@Sendable' closure
1840 |
1841 |             // notify the delegate of the consumer status
1842 |             self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: consumer.name, cid: consumer.cid, ipMode: newIpMode, ipAddresses: newIpAddresses, sequenceErrors: consumer.sequenceErrors, state: consumer.notifiedState, moduleIdentifiers: consumer.moduleIdentifiers)) }
     |                                                                                                                                                       `- warning: capture of 'newIpMode' with non-sendable type 'OTPIPMode' in a '@Sendable' closure
1843 |
1844 |             self.consumers[index].ipAddresses = newIpAddresses
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Network/NetworkDefinitions.swift:60:13: note: consider making enum 'OTPIPMode' conform to the 'Sendable' protocol
 58 |
 59 | */
 60 | public enum OTPIPMode: String, CaseIterable {
    |             `- note: consider making enum 'OTPIPMode' conform to the 'Sendable' protocol
 61 |
 62 |     /// The `Component` should only use IPv4.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1889:39: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1887 |             if self._isConnected != false {
1888 |                 self._isConnected = false
1889 |                 delegateQueue.async { self.producerDelegate?.disconnected(self, with: error) }
     |                                       `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1890 |             }
1891 |         }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1902:31: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1900 |     */
1901 |     func debugSocketLog(_ logMessage: String) {
1902 |         delegateQueue.async { self.debugDelegate?.debugSocketLog(logMessage) }
     |                               `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1903 |     }
1904 |
[28/38] Compiling OTPKit ProducerConsumer.swift
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:793:40: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
 791 |             }
 792 |
 793 |             self.delegateQueue.async { self.debugDelegate?.debugLog("Reset \(systemNumbers?.count ?? Int(SystemNumber.maxSystemNumber)) transform message folio numbers to \(FolioNumber.min)") }
     |                                        `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
 794 |         }
 795 |     }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:811:49: warning: capture of 'self' with non-sendable type 'OTPProducer?' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
 809 |
 810 |                     // notify the debug delegate
 811 |                     self?.delegateQueue.async { self?.debugDelegate?.debugLog("Completed initial wait for module advertisement messages") }
     |                                                 `- warning: capture of 'self' with non-sendable type 'OTPProducer?' in a '@Sendable' closure
 812 |
 813 |                     // start the transform heartbeat
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:811:49: warning: reference to captured var 'self' in concurrently-executing code
 809 |
 810 |                     // notify the debug delegate
 811 |                     self?.delegateQueue.async { self?.debugDelegate?.debugLog("Completed initial wait for module advertisement messages") }
     |                                                 `- warning: reference to captured var 'self' in concurrently-executing code
 812 |
 813 |                     // start the transform heartbeat
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:858:53: warning: capture of 'self' with non-sendable type 'OTPProducer?' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
 856 |
 857 |                         // notify the debug delegate
 858 |                         self?.delegateQueue.async { self?.debugDelegate?.debugLog("Check for stale modules. Resulting modules \(newModuleIdentifiers.map { $0.moduleIdentifier.logDescription }.joined(separator: ", "))") }
     |                                                     `- warning: capture of 'self' with non-sendable type 'OTPProducer?' in a '@Sendable' closure
 859 |
 860 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:858:129: warning: capture of 'newModuleIdentifiers' with non-sendable type '[ModuleIdentifierNotification]' in a '@Sendable' closure
 856 |
 857 |                         // notify the debug delegate
 858 |                         self?.delegateQueue.async { self?.debugDelegate?.debugLog("Check for stale modules. Resulting modules \(newModuleIdentifiers.map { $0.moduleIdentifier.logDescription }.joined(separator: ", "))") }
     |                                                                                                                                 `- warning: capture of 'newModuleIdentifiers' with non-sendable type '[ModuleIdentifierNotification]' in a '@Sendable' closure
 859 |
 860 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Types/ModuleIdentifier.swift:85:8: note: consider making struct 'ModuleIdentifierNotification' conform to the 'Sendable' protocol
 83 | */
 84 |
 85 | struct ModuleIdentifierNotification: Comparable, Hashable {
    |        `- note: consider making struct 'ModuleIdentifierNotification' conform to the 'Sendable' protocol
 86 |
 87 |     /// Identifies the module.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:858:53: warning: reference to captured var 'self' in concurrently-executing code
 856 |
 857 |                         // notify the debug delegate
 858 |                         self?.delegateQueue.async { self?.debugDelegate?.debugLog("Check for stale modules. Resulting modules \(newModuleIdentifiers.map { $0.moduleIdentifier.logDescription }.joined(separator: ", "))") }
     |                                                     `- warning: reference to captured var 'self' in concurrently-executing code
 859 |
 860 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1072:35: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1070 |
1071 |         for consumer in lostConsumers {
1072 |             delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: consumer.name, cid: consumer.cid, ipMode: consumer.ipMode, ipAddresses: consumer.ipAddresses, sequenceErrors: consumer.sequenceErrors, state: .offline, moduleIdentifiers: consumer.moduleIdentifiers)) }
     |                                   `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1073 |         }
1074 |
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1072:104: warning: capture of 'consumer' with non-sendable type 'ProducerConsumer' in a '@Sendable' closure
1070 |
1071 |         for consumer in lostConsumers {
1072 |             delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: consumer.name, cid: consumer.cid, ipMode: consumer.ipMode, ipAddresses: consumer.ipAddresses, sequenceErrors: consumer.sequenceErrors, state: .offline, moduleIdentifiers: consumer.moduleIdentifiers)) }
     |                                                                                                        `- warning: capture of 'consumer' with non-sendable type 'ProducerConsumer' in a '@Sendable' closure
1073 |         }
1074 |
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/ProducerConsumer.swift:36:8: note: consider making struct 'ProducerConsumer' conform to the 'Sendable' protocol
 34 | */
 35 |
 36 | struct ProducerConsumer: Equatable {
    |        `- note: consider making struct 'ProducerConsumer' conform to the 'Sendable' protocol
 37 |
 38 |     /// A globally unique identifier (UUID) representing the consumer, compliant with RFC 4122.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1095:59: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1093 |         DispatchQueue.global().async {
1094 |
1095 |             let previousSystemNumbers = Self.queue.sync { self.systemNumbers }
     |                                                           `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1096 |
1097 |             // get the new system numbers for all points which have modules which have been requested
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1095:59: warning: capture of 'self' with non-sendable type 'OTPProducer' in an isolated closure; this is an error in the Swift 6 language mode
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1093 |         DispatchQueue.global().async {
1094 |
1095 |             let previousSystemNumbers = Self.queue.sync { self.systemNumbers }
     |                                                           `- warning: capture of 'self' with non-sendable type 'OTPProducer' in an isolated closure; this is an error in the Swift 6 language mode
1096 |
1097 |             // get the new system numbers for all points which have modules which have been requested
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1098:51: warning: capture of 'self' with non-sendable type 'OTPProducer' in an isolated closure; this is an error in the Swift 6 language mode
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1096 |
1097 |             // get the new system numbers for all points which have modules which have been requested
1098 |             let systemNumbers = Self.queue.sync { self.points.filter { !$0.modules.isEmpty && $0.hasRequestedModules }.map { $0.address.systemNumber } }
     |                                                   `- warning: capture of 'self' with non-sendable type 'OTPProducer' in an isolated closure; this is an error in the Swift 6 language mode
1099 |             let newSystemNumbers = Array(Set(systemNumbers)).sorted()
1100 |
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1105:21: warning: capture of 'self' with non-sendable type 'OTPProducer' in an isolated closure; this is an error in the Swift 6 language mode
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1103 |
1104 |                 Self.queue.sync(flags: .barrier) {
1105 |                     self.systemNumbers = newSystemNumbers
     |                     `- warning: capture of 'self' with non-sendable type 'OTPProducer' in an isolated closure; this is an error in the Swift 6 language mode
1106 |                 }
1107 |
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1111:21: warning: capture of 'self' with non-sendable type 'OTPProducer' in an isolated closure; this is an error in the Swift 6 language mode
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1109 |
1110 |                 Self.queue.sync(flags: .barrier) {
1111 |                     self.systemAdvertisementMessage = systemAdvertisementMessage
     |                     `- warning: capture of 'self' with non-sendable type 'OTPProducer' in an isolated closure; this is an error in the Swift 6 language mode
1112 |                 }
1113 |
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1127:70: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1125 |         DispatchQueue.global().async {
1126 |
1127 |             let previousAddressPointDescriptions = Self.queue.sync { self.nameAddressPointDescriptions }
     |                                                                      `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1128 |
1129 |             // get the new address point descriptions (must not be empty), and the point should have modules
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1127:70: warning: capture of 'self' with non-sendable type 'OTPProducer' in an isolated closure; this is an error in the Swift 6 language mode
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1125 |         DispatchQueue.global().async {
1126 |
1127 |             let previousAddressPointDescriptions = Self.queue.sync { self.nameAddressPointDescriptions }
     |                                                                      `- warning: capture of 'self' with non-sendable type 'OTPProducer' in an isolated closure; this is an error in the Swift 6 language mode
1128 |
1129 |             // get the new address point descriptions (must not be empty), and the point should have modules
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1131:62: warning: capture of 'self' with non-sendable type 'OTPProducer' in an isolated closure; this is an error in the Swift 6 language mode
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1129 |             // get the new address point descriptions (must not be empty), and the point should have modules
1130 |
1131 |             let addressPointDescriptions = Self.queue.sync { self.points.filter { !$0.modules.isEmpty && !$0.name.isEmpty }.map { AddressPointDescription(address: $0.address, pointName: $0.name) } }
     |                                                              `- warning: capture of 'self' with non-sendable type 'OTPProducer' in an isolated closure; this is an error in the Swift 6 language mode
1132 |             let newAddressPointDescriptions = Array(Set(addressPointDescriptions)).sorted()
1133 |
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1161:21: warning: capture of 'self' with non-sendable type 'OTPProducer' in an isolated closure; this is an error in the Swift 6 language mode
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1159 |
1160 |                 Self.queue.sync(flags: .barrier) {
1161 |                     self.nameAddressPointDescriptions = newAddressPointDescriptions
     |                     `- warning: capture of 'self' with non-sendable type 'OTPProducer' in an isolated closure; this is an error in the Swift 6 language mode
1162 |                 }
1163 |
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1167:21: warning: capture of 'self' with non-sendable type 'OTPProducer' in an isolated closure; this is an error in the Swift 6 language mode
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1165 |
1166 |                 Self.queue.sync(flags: .barrier) {
1167 |                     self.nameAdvertisementMessages = nameAdvertisementMessages
     |                     `- warning: capture of 'self' with non-sendable type 'OTPProducer' in an isolated closure; this is an error in the Swift 6 language mode
1168 |                 }
1169 |
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1496:47: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1494 |
1495 |                         // notify the debug delegate
1496 |                         delegateQueue.async { self.debugDelegate?.debugLog("Received module advertisement message from \(otpLayer.componentName) \(otpLayer.cid)") }
     |                                               `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1497 |
1498 |                         // try to extract a module advertisement layer
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1502:47: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1500 |
1501 |                         // notify the debug delegate
1502 |                         delegateQueue.async { self.debugDelegate?.debugLog("Received module identifiers \(moduleAdvertisementLayer.moduleIdentifiers.map { $0.logDescription }.joined(separator: ", ")) from \(otpLayer.cid)") }
     |                                               `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1503 |
1504 |                         let now = Date()
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1502:107: warning: capture of 'moduleAdvertisementLayer' with non-sendable type 'ModuleAdvertismentLayer' in a '@Sendable' closure
1500 |
1501 |                         // notify the debug delegate
1502 |                         delegateQueue.async { self.debugDelegate?.debugLog("Received module identifiers \(moduleAdvertisementLayer.moduleIdentifiers.map { $0.logDescription }.joined(separator: ", ")) from \(otpLayer.cid)") }
     |                                                                                                           `- warning: capture of 'moduleAdvertisementLayer' with non-sendable type 'ModuleAdvertismentLayer' in a '@Sendable' closure
1503 |
1504 |                         let now = Date()
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Layers/ModuleAdvertisementLayer.swift:34:8: note: consider making struct 'ModuleAdvertismentLayer' conform to the 'Sendable' protocol
 32 | */
 33 |
 34 | struct ModuleAdvertismentLayer {
    |        `- note: consider making struct 'ModuleAdvertismentLayer' conform to the 'Sendable' protocol
 35 |
 36 |     /// The offset from which length counting begins.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1527:47: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1525 |
1526 |                         // notify the debug delegate
1527 |                         delegateQueue.async { self.debugDelegate?.debugLog("Resulting modules \(newModuleIdentifiers.map { $0.moduleIdentifier.logDescription }.joined(separator: ", "))") }
     |                                               `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1528 |
1529 |                         // only rebuild if the identifiers are different
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1527:97: warning: capture of 'newModuleIdentifiers' with non-sendable type '[ModuleIdentifierNotification]' in a '@Sendable' closure
1525 |
1526 |                         // notify the debug delegate
1527 |                         delegateQueue.async { self.debugDelegate?.debugLog("Resulting modules \(newModuleIdentifiers.map { $0.moduleIdentifier.logDescription }.joined(separator: ", "))") }
     |                                                                                                 `- warning: capture of 'newModuleIdentifiers' with non-sendable type '[ModuleIdentifierNotification]' in a '@Sendable' closure
1528 |
1529 |                         // only rebuild if the identifiers are different
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Types/ModuleIdentifier.swift:85:8: note: consider making struct 'ModuleIdentifierNotification' conform to the 'Sendable' protocol
 83 | */
 84 |
 85 | struct ModuleIdentifierNotification: Comparable, Hashable {
    |        `- note: consider making struct 'ModuleIdentifierNotification' conform to the 'Sendable' protocol
 86 |
 87 |     /// Identifies the module.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1582:60: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1580 |
1581 |                                 // notify the delegate of the consumer status
1582 |                                 self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: consumer.cid, ipMode: existingComponentIPMode, ipAddresses: newIpAddresses, sequenceErrors: consumer.sequenceErrors, state: notifiedState, moduleIdentifiers: moduleAdvertisementLayer.moduleIdentifiers)) }
     |                                                            `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1583 |
1584 |                                 // update both name and ip when this happens
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1582:158: warning: capture of 'consumer' with non-sendable type 'ProducerConsumer' in a '@Sendable' closure
1580 |
1581 |                                 // notify the delegate of the consumer status
1582 |                                 self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: consumer.cid, ipMode: existingComponentIPMode, ipAddresses: newIpAddresses, sequenceErrors: consumer.sequenceErrors, state: notifiedState, moduleIdentifiers: moduleAdvertisementLayer.moduleIdentifiers)) }
     |                                                                                                                                                              `- warning: capture of 'consumer' with non-sendable type 'ProducerConsumer' in a '@Sendable' closure
1583 |
1584 |                                 // update both name and ip when this happens
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/ProducerConsumer.swift:36:8: note: consider making struct 'ProducerConsumer' conform to the 'Sendable' protocol
 34 | */
 35 |
 36 | struct ProducerConsumer: Equatable {
    |        `- note: consider making struct 'ProducerConsumer' conform to the 'Sendable' protocol
 37 |
 38 |     /// A globally unique identifier (UUID) representing the consumer, compliant with RFC 4122.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1582:180: warning: capture of 'existingComponentIPMode' with non-sendable type 'OTPIPMode' in a '@Sendable' closure
1580 |
1581 |                                 // notify the delegate of the consumer status
1582 |                                 self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: consumer.cid, ipMode: existingComponentIPMode, ipAddresses: newIpAddresses, sequenceErrors: consumer.sequenceErrors, state: notifiedState, moduleIdentifiers: moduleAdvertisementLayer.moduleIdentifiers)) }
     |                                                                                                                                                                                    `- warning: capture of 'existingComponentIPMode' with non-sendable type 'OTPIPMode' in a '@Sendable' closure
1583 |
1584 |                                 // update both name and ip when this happens
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Network/NetworkDefinitions.swift:60:13: note: consider making enum 'OTPIPMode' conform to the 'Sendable' protocol
 58 |
 59 | */
 60 | public enum OTPIPMode: String, CaseIterable {
    |             `- note: consider making enum 'OTPIPMode' conform to the 'Sendable' protocol
 61 |
 62 |     /// The `Component` should only use IPv4.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1582:282: warning: capture of 'notifiedState' with non-sendable type 'OTPComponentState' in a '@Sendable' closure
1580 |
1581 |                                 // notify the delegate of the consumer status
1582 |                                 self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: consumer.cid, ipMode: existingComponentIPMode, ipAddresses: newIpAddresses, sequenceErrors: consumer.sequenceErrors, state: notifiedState, moduleIdentifiers: moduleAdvertisementLayer.moduleIdentifiers)) }
     |                                                                                                                                                                                                                                                                                          `- warning: capture of 'notifiedState' with non-sendable type 'OTPComponentState' in a '@Sendable' closure
1583 |
1584 |                                 // update both name and ip when this happens
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/ComponentStatus.swift:35:13: note: consider making enum 'OTPComponentState' conform to the 'Sendable' protocol
 33 |
 34 | */
 35 | public enum OTPComponentState: String {
    |             `- note: consider making enum 'OTPComponentState' conform to the 'Sendable' protocol
 36 |
 37 |     /// This component is offline.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1582:316: warning: capture of 'moduleAdvertisementLayer' with non-sendable type 'ModuleAdvertismentLayer' in a '@Sendable' closure
1580 |
1581 |                                 // notify the delegate of the consumer status
1582 |                                 self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: consumer.cid, ipMode: existingComponentIPMode, ipAddresses: newIpAddresses, sequenceErrors: consumer.sequenceErrors, state: notifiedState, moduleIdentifiers: moduleAdvertisementLayer.moduleIdentifiers)) }
     |                                                                                                                                                                                                                                                                                                                            `- warning: capture of 'moduleAdvertisementLayer' with non-sendable type 'ModuleAdvertismentLayer' in a '@Sendable' closure
1583 |
1584 |                                 // update both name and ip when this happens
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Layers/ModuleAdvertisementLayer.swift:34:8: note: consider making struct 'ModuleAdvertismentLayer' conform to the 'Sendable' protocol
 32 | */
 33 |
 34 | struct ModuleAdvertismentLayer {
    |        `- note: consider making struct 'ModuleAdvertismentLayer' conform to the 'Sendable' protocol
 35 |
 36 |     /// The offset from which length counting begins.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1600:56: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1598 |
1599 |                             // notify the delegate of the consumer status
1600 |                             self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: otpLayer.cid, ipMode: newComponentIPMode, ipAddresses: [hostname], sequenceErrors: consumer.sequenceErrors, state: .advertising, moduleIdentifiers: moduleAdvertisementLayer.moduleIdentifiers)) }
     |                                                        `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1601 |
1602 |                         }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1600:176: warning: capture of 'newComponentIPMode' with non-sendable type 'OTPIPMode' in a '@Sendable' closure
1598 |
1599 |                             // notify the delegate of the consumer status
1600 |                             self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: otpLayer.cid, ipMode: newComponentIPMode, ipAddresses: [hostname], sequenceErrors: consumer.sequenceErrors, state: .advertising, moduleIdentifiers: moduleAdvertisementLayer.moduleIdentifiers)) }
     |                                                                                                                                                                                `- warning: capture of 'newComponentIPMode' with non-sendable type 'OTPIPMode' in a '@Sendable' closure
1601 |
1602 |                         }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Network/NetworkDefinitions.swift:60:13: note: consider making enum 'OTPIPMode' conform to the 'Sendable' protocol
 58 |
 59 | */
 60 | public enum OTPIPMode: String, CaseIterable {
    |             `- note: consider making enum 'OTPIPMode' conform to the 'Sendable' protocol
 61 |
 62 |     /// The `Component` should only use IPv4.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1600:237: warning: capture of 'consumer' with non-sendable type 'ProducerConsumer' in a '@Sendable' closure
1598 |
1599 |                             // notify the delegate of the consumer status
1600 |                             self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: otpLayer.cid, ipMode: newComponentIPMode, ipAddresses: [hostname], sequenceErrors: consumer.sequenceErrors, state: .advertising, moduleIdentifiers: moduleAdvertisementLayer.moduleIdentifiers)) }
     |                                                                                                                                                                                                                                             `- warning: capture of 'consumer' with non-sendable type 'ProducerConsumer' in a '@Sendable' closure
1601 |
1602 |                         }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/ProducerConsumer.swift:36:8: note: consider making struct 'ProducerConsumer' conform to the 'Sendable' protocol
 34 | */
 35 |
 36 | struct ProducerConsumer: Equatable {
    |        `- note: consider making struct 'ProducerConsumer' conform to the 'Sendable' protocol
 37 |
 38 |     /// A globally unique identifier (UUID) representing the consumer, compliant with RFC 4122.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1600:302: warning: capture of 'moduleAdvertisementLayer' with non-sendable type 'ModuleAdvertismentLayer' in a '@Sendable' closure
1598 |
1599 |                             // notify the delegate of the consumer status
1600 |                             self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: otpLayer.cid, ipMode: newComponentIPMode, ipAddresses: [hostname], sequenceErrors: consumer.sequenceErrors, state: .advertising, moduleIdentifiers: moduleAdvertisementLayer.moduleIdentifiers)) }
     |                                                                                                                                                                                                                                                                                                              `- warning: capture of 'moduleAdvertisementLayer' with non-sendable type 'ModuleAdvertismentLayer' in a '@Sendable' closure
1601 |
1602 |                         }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Layers/ModuleAdvertisementLayer.swift:34:8: note: consider making struct 'ModuleAdvertismentLayer' conform to the 'Sendable' protocol
 32 | */
 33 |
 34 | struct ModuleAdvertismentLayer {
    |        `- note: consider making struct 'ModuleAdvertismentLayer' conform to the 'Sendable' protocol
 35 |
 36 |     /// The offset from which length counting begins.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1650:60: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1648 |
1649 |                                 // notify the delegate of the consumer status
1650 |                                 self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: consumer.cid, ipMode: existingComponentIPMode, ipAddresses: newIpAddresses, sequenceErrors: consumer.sequenceErrors, state: notifiedState, moduleIdentifiers: moduleIdentifiers)) }
     |                                                            `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1651 |
1652 |                                 // update both name and ip when this happens
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1650:158: warning: capture of 'consumer' with non-sendable type 'ProducerConsumer' in a '@Sendable' closure
1648 |
1649 |                                 // notify the delegate of the consumer status
1650 |                                 self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: consumer.cid, ipMode: existingComponentIPMode, ipAddresses: newIpAddresses, sequenceErrors: consumer.sequenceErrors, state: notifiedState, moduleIdentifiers: moduleIdentifiers)) }
     |                                                                                                                                                              `- warning: capture of 'consumer' with non-sendable type 'ProducerConsumer' in a '@Sendable' closure
1651 |
1652 |                                 // update both name and ip when this happens
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/ProducerConsumer.swift:36:8: note: consider making struct 'ProducerConsumer' conform to the 'Sendable' protocol
 34 | */
 35 |
 36 | struct ProducerConsumer: Equatable {
    |        `- note: consider making struct 'ProducerConsumer' conform to the 'Sendable' protocol
 37 |
 38 |     /// A globally unique identifier (UUID) representing the consumer, compliant with RFC 4122.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1650:180: warning: capture of 'existingComponentIPMode' with non-sendable type 'OTPIPMode' in a '@Sendable' closure
1648 |
1649 |                                 // notify the delegate of the consumer status
1650 |                                 self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: consumer.cid, ipMode: existingComponentIPMode, ipAddresses: newIpAddresses, sequenceErrors: consumer.sequenceErrors, state: notifiedState, moduleIdentifiers: moduleIdentifiers)) }
     |                                                                                                                                                                                    `- warning: capture of 'existingComponentIPMode' with non-sendable type 'OTPIPMode' in a '@Sendable' closure
1651 |
1652 |                                 // update both name and ip when this happens
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Network/NetworkDefinitions.swift:60:13: note: consider making enum 'OTPIPMode' conform to the 'Sendable' protocol
 58 |
 59 | */
 60 | public enum OTPIPMode: String, CaseIterable {
    |             `- note: consider making enum 'OTPIPMode' conform to the 'Sendable' protocol
 61 |
 62 |     /// The `Component` should only use IPv4.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1650:282: warning: capture of 'notifiedState' with non-sendable type 'OTPComponentState' in a '@Sendable' closure
1648 |
1649 |                                 // notify the delegate of the consumer status
1650 |                                 self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: consumer.cid, ipMode: existingComponentIPMode, ipAddresses: newIpAddresses, sequenceErrors: consumer.sequenceErrors, state: notifiedState, moduleIdentifiers: moduleIdentifiers)) }
     |                                                                                                                                                                                                                                                                                          `- warning: capture of 'notifiedState' with non-sendable type 'OTPComponentState' in a '@Sendable' closure
1651 |
1652 |                                 // update both name and ip when this happens
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/ComponentStatus.swift:35:13: note: consider making enum 'OTPComponentState' conform to the 'Sendable' protocol
 33 |
 34 | */
 35 | public enum OTPComponentState: String {
    |             `- note: consider making enum 'OTPComponentState' conform to the 'Sendable' protocol
 36 |
 37 |     /// This component is offline.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1650:316: warning: capture of 'moduleIdentifiers' with non-sendable type '[OTPModuleIdentifier]' in a '@Sendable' closure
1648 |
1649 |                                 // notify the delegate of the consumer status
1650 |                                 self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: consumer.cid, ipMode: existingComponentIPMode, ipAddresses: newIpAddresses, sequenceErrors: consumer.sequenceErrors, state: notifiedState, moduleIdentifiers: moduleIdentifiers)) }
     |                                                                                                                                                                                                                                                                                                                            `- warning: capture of 'moduleIdentifiers' with non-sendable type '[OTPModuleIdentifier]' in a '@Sendable' closure
1651 |
1652 |                                 // update both name and ip when this happens
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Types/ModuleIdentifier.swift:34:15: note: consider making struct 'OTPModuleIdentifier' conform to the 'Sendable' protocol
 32 | */
 33 |
 34 | public struct OTPModuleIdentifier: Comparable, Hashable {
    |               `- note: consider making struct 'OTPModuleIdentifier' conform to the 'Sendable' protocol
 35 |
 36 |     /**
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1667:56: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1665 |
1666 |                             // notify the delegate of the consumer status
1667 |                             self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: otpLayer.cid, ipMode: newComponentIPMode, ipAddresses: [hostname], sequenceErrors: consumer.sequenceErrors, state: .advertising, moduleIdentifiers: [])) }
     |                                                        `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1668 |
1669 |
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1667:176: warning: capture of 'newComponentIPMode' with non-sendable type 'OTPIPMode' in a '@Sendable' closure
1665 |
1666 |                             // notify the delegate of the consumer status
1667 |                             self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: otpLayer.cid, ipMode: newComponentIPMode, ipAddresses: [hostname], sequenceErrors: consumer.sequenceErrors, state: .advertising, moduleIdentifiers: [])) }
     |                                                                                                                                                                                `- warning: capture of 'newComponentIPMode' with non-sendable type 'OTPIPMode' in a '@Sendable' closure
1668 |
1669 |
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Network/NetworkDefinitions.swift:60:13: note: consider making enum 'OTPIPMode' conform to the 'Sendable' protocol
 58 |
 59 | */
 60 | public enum OTPIPMode: String, CaseIterable {
    |             `- note: consider making enum 'OTPIPMode' conform to the 'Sendable' protocol
 61 |
 62 |     /// The `Component` should only use IPv4.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1667:237: warning: capture of 'consumer' with non-sendable type 'ProducerConsumer' in a '@Sendable' closure
1665 |
1666 |                             // notify the delegate of the consumer status
1667 |                             self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: otpLayer.cid, ipMode: newComponentIPMode, ipAddresses: [hostname], sequenceErrors: consumer.sequenceErrors, state: .advertising, moduleIdentifiers: [])) }
     |                                                                                                                                                                                                                                             `- warning: capture of 'consumer' with non-sendable type 'ProducerConsumer' in a '@Sendable' closure
1668 |
1669 |
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/ProducerConsumer.swift:36:8: note: consider making struct 'ProducerConsumer' conform to the 'Sendable' protocol
 34 | */
 35 |
 36 | struct ProducerConsumer: Equatable {
    |        `- note: consider making struct 'ProducerConsumer' conform to the 'Sendable' protocol
 37 |
 38 |     /// A globally unique identifier (UUID) representing the consumer, compliant with RFC 4122.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1673:47: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1671 |
1672 |                         // notify the debug delegate
1673 |                         delegateQueue.async { self.debugDelegate?.debugLog("Received name advertisement message from \(otpLayer.componentName) \(otpLayer.cid)") }
     |                                               `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1674 |
1675 |                     case .system:
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1721:60: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1719 |
1720 |                                 // notify the delegate of the consumer status
1721 |                                 self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: consumer.cid, ipMode: existingComponentIPMode, ipAddresses: newIpAddresses, sequenceErrors: consumer.sequenceErrors, state: notifiedState, moduleIdentifiers: moduleIdentifiers)) }
     |                                                            `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1722 |
1723 |                                 // update both name and ip when this happens
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1721:158: warning: capture of 'consumer' with non-sendable type 'ProducerConsumer' in a '@Sendable' closure
1719 |
1720 |                                 // notify the delegate of the consumer status
1721 |                                 self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: consumer.cid, ipMode: existingComponentIPMode, ipAddresses: newIpAddresses, sequenceErrors: consumer.sequenceErrors, state: notifiedState, moduleIdentifiers: moduleIdentifiers)) }
     |                                                                                                                                                              `- warning: capture of 'consumer' with non-sendable type 'ProducerConsumer' in a '@Sendable' closure
1722 |
1723 |                                 // update both name and ip when this happens
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/ProducerConsumer.swift:36:8: note: consider making struct 'ProducerConsumer' conform to the 'Sendable' protocol
 34 | */
 35 |
 36 | struct ProducerConsumer: Equatable {
    |        `- note: consider making struct 'ProducerConsumer' conform to the 'Sendable' protocol
 37 |
 38 |     /// A globally unique identifier (UUID) representing the consumer, compliant with RFC 4122.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1721:180: warning: capture of 'existingComponentIPMode' with non-sendable type 'OTPIPMode' in a '@Sendable' closure
1719 |
1720 |                                 // notify the delegate of the consumer status
1721 |                                 self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: consumer.cid, ipMode: existingComponentIPMode, ipAddresses: newIpAddresses, sequenceErrors: consumer.sequenceErrors, state: notifiedState, moduleIdentifiers: moduleIdentifiers)) }
     |                                                                                                                                                                                    `- warning: capture of 'existingComponentIPMode' with non-sendable type 'OTPIPMode' in a '@Sendable' closure
1722 |
1723 |                                 // update both name and ip when this happens
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Network/NetworkDefinitions.swift:60:13: note: consider making enum 'OTPIPMode' conform to the 'Sendable' protocol
 58 |
 59 | */
 60 | public enum OTPIPMode: String, CaseIterable {
    |             `- note: consider making enum 'OTPIPMode' conform to the 'Sendable' protocol
 61 |
 62 |     /// The `Component` should only use IPv4.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1721:282: warning: capture of 'notifiedState' with non-sendable type 'OTPComponentState' in a '@Sendable' closure
1719 |
1720 |                                 // notify the delegate of the consumer status
1721 |                                 self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: consumer.cid, ipMode: existingComponentIPMode, ipAddresses: newIpAddresses, sequenceErrors: consumer.sequenceErrors, state: notifiedState, moduleIdentifiers: moduleIdentifiers)) }
     |                                                                                                                                                                                                                                                                                          `- warning: capture of 'notifiedState' with non-sendable type 'OTPComponentState' in a '@Sendable' closure
1722 |
1723 |                                 // update both name and ip when this happens
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/ComponentStatus.swift:35:13: note: consider making enum 'OTPComponentState' conform to the 'Sendable' protocol
 33 |
 34 | */
 35 | public enum OTPComponentState: String {
    |             `- note: consider making enum 'OTPComponentState' conform to the 'Sendable' protocol
 36 |
 37 |     /// This component is offline.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1721:316: warning: capture of 'moduleIdentifiers' with non-sendable type '[OTPModuleIdentifier]' in a '@Sendable' closure
1719 |
1720 |                                 // notify the delegate of the consumer status
1721 |                                 self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: consumer.cid, ipMode: existingComponentIPMode, ipAddresses: newIpAddresses, sequenceErrors: consumer.sequenceErrors, state: notifiedState, moduleIdentifiers: moduleIdentifiers)) }
     |                                                                                                                                                                                                                                                                                                                            `- warning: capture of 'moduleIdentifiers' with non-sendable type '[OTPModuleIdentifier]' in a '@Sendable' closure
1722 |
1723 |                                 // update both name and ip when this happens
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Types/ModuleIdentifier.swift:34:15: note: consider making struct 'OTPModuleIdentifier' conform to the 'Sendable' protocol
 32 | */
 33 |
 34 | public struct OTPModuleIdentifier: Comparable, Hashable {
    |               `- note: consider making struct 'OTPModuleIdentifier' conform to the 'Sendable' protocol
 35 |
 36 |     /**
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1738:56: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1736 |
1737 |                             // notify the delegate of the consumer status
1738 |                             self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: otpLayer.cid, ipMode: newComponentIPMode, ipAddresses: [hostname], sequenceErrors: consumer.sequenceErrors, state: .advertising, moduleIdentifiers: [])) }
     |                                                        `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1739 |
1740 |                         }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1738:176: warning: capture of 'newComponentIPMode' with non-sendable type 'OTPIPMode' in a '@Sendable' closure
1736 |
1737 |                             // notify the delegate of the consumer status
1738 |                             self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: otpLayer.cid, ipMode: newComponentIPMode, ipAddresses: [hostname], sequenceErrors: consumer.sequenceErrors, state: .advertising, moduleIdentifiers: [])) }
     |                                                                                                                                                                                `- warning: capture of 'newComponentIPMode' with non-sendable type 'OTPIPMode' in a '@Sendable' closure
1739 |
1740 |                         }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Network/NetworkDefinitions.swift:60:13: note: consider making enum 'OTPIPMode' conform to the 'Sendable' protocol
 58 |
 59 | */
 60 | public enum OTPIPMode: String, CaseIterable {
    |             `- note: consider making enum 'OTPIPMode' conform to the 'Sendable' protocol
 61 |
 62 |     /// The `Component` should only use IPv4.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1738:237: warning: capture of 'consumer' with non-sendable type 'ProducerConsumer' in a '@Sendable' closure
1736 |
1737 |                             // notify the delegate of the consumer status
1738 |                             self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: otpLayer.cid, ipMode: newComponentIPMode, ipAddresses: [hostname], sequenceErrors: consumer.sequenceErrors, state: .advertising, moduleIdentifiers: [])) }
     |                                                                                                                                                                                                                                             `- warning: capture of 'consumer' with non-sendable type 'ProducerConsumer' in a '@Sendable' closure
1739 |
1740 |                         }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/ProducerConsumer.swift:36:8: note: consider making struct 'ProducerConsumer' conform to the 'Sendable' protocol
 34 | */
 35 |
 36 | struct ProducerConsumer: Equatable {
    |        `- note: consider making struct 'ProducerConsumer' conform to the 'Sendable' protocol
 37 |
 38 |     /// A globally unique identifier (UUID) representing the consumer, compliant with RFC 4122.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1743:47: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1741 |
1742 |                         // notify the debug delegate
1743 |                         delegateQueue.async { self.debugDelegate?.debugLog("Received system advertisement message from \(otpLayer.componentName) \(otpLayer.cid)") }
     |                                               `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1744 |
1745 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1772:52: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1770 |
1771 |                         // notify the delegate
1772 |                         self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(consumerStatus) }
     |                                                    `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1773 |
1774 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1772:97: warning: capture of 'consumerStatus' with non-sendable type 'OTPConsumerStatus' in a '@Sendable' closure
1770 |
1771 |                         // notify the delegate
1772 |                         self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(consumerStatus) }
     |                                                                                                 `- warning: capture of 'consumerStatus' with non-sendable type 'OTPConsumerStatus' in a '@Sendable' closure
1773 |
1774 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/ComponentStatus.swift:143:15: note: consider making struct 'OTPConsumerStatus' conform to the 'Sendable' protocol
141 | */
142 |
143 | public struct OTPConsumerStatus: OTPComponentStatus {
    |               `- note: consider making struct 'OTPConsumerStatus' conform to the 'Sendable' protocol
144 |
145 |     /// A globally unique identifier (UUID) representing the consumer, compliant with RFC 4122.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1779:43: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1777 |
1778 |                     // there was an error in the otp layer
1779 |                     delegateQueue.async { self.protocolErrorDelegate?.layerError(error.logDescription) }
     |                                           `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1780 |
1781 |                 }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1786:39: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1784 |
1785 |                 // there was an error in the advertisement layer
1786 |                 delegateQueue.async { self.protocolErrorDelegate?.layerError(error.logDescription) }
     |                                       `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1787 |
1788 |             } catch let error as ModuleAdvertisementLayerValidationError {
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1791:39: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1789 |
1790 |                 // there was an error in the module advertisement layer
1791 |                 delegateQueue.async { self.protocolErrorDelegate?.layerError(error.logDescription) }
     |                                       `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1792 |
1793 |             } catch let error as SystemAdvertisementLayerValidationError {
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1796:39: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1794 |
1795 |                 // there was an error in the system advertisement layer
1796 |                 delegateQueue.async { self.protocolErrorDelegate?.layerError(error.logDescription) }
     |                                       `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1797 |
1798 |             } catch let error as NameAdvertisementLayerValidationError {
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1801:39: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1799 |
1800 |                 // there was an error in the name advertisement layer
1801 |                 delegateQueue.async { self.protocolErrorDelegate?.layerError(error.logDescription) }
     |                                       `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1802 |
1803 |             } catch let error as TransformLayerValidationError {
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1806:39: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1804 |
1805 |                 // there was an error in the transform layer
1806 |                 delegateQueue.async { self.protocolErrorDelegate?.layerError(error.logDescription) }
     |                                       `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1807 |
1808 |             } catch let error {
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1811:39: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1809 |
1810 |                 // there was an unknown error
1811 |                 delegateQueue.async { self.protocolErrorDelegate?.unknownError(error.localizedDescription) }
     |                                       `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1812 |
1813 |             }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1842:40: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1840 |
1841 |             // notify the delegate of the consumer status
1842 |             self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: consumer.name, cid: consumer.cid, ipMode: newIpMode, ipAddresses: newIpAddresses, sequenceErrors: consumer.sequenceErrors, state: consumer.notifiedState, moduleIdentifiers: consumer.moduleIdentifiers)) }
     |                                        `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1843 |
1844 |             self.consumers[index].ipAddresses = newIpAddresses
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1842:109: warning: capture of 'consumer' with non-sendable type 'ProducerConsumer' in a '@Sendable' closure
1840 |
1841 |             // notify the delegate of the consumer status
1842 |             self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: consumer.name, cid: consumer.cid, ipMode: newIpMode, ipAddresses: newIpAddresses, sequenceErrors: consumer.sequenceErrors, state: consumer.notifiedState, moduleIdentifiers: consumer.moduleIdentifiers)) }
     |                                                                                                             `- warning: capture of 'consumer' with non-sendable type 'ProducerConsumer' in a '@Sendable' closure
1843 |
1844 |             self.consumers[index].ipAddresses = newIpAddresses
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/ProducerConsumer.swift:36:8: note: consider making struct 'ProducerConsumer' conform to the 'Sendable' protocol
 34 | */
 35 |
 36 | struct ProducerConsumer: Equatable {
    |        `- note: consider making struct 'ProducerConsumer' conform to the 'Sendable' protocol
 37 |
 38 |     /// A globally unique identifier (UUID) representing the consumer, compliant with RFC 4122.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1842:151: warning: capture of 'newIpMode' with non-sendable type 'OTPIPMode' in a '@Sendable' closure
1840 |
1841 |             // notify the delegate of the consumer status
1842 |             self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: consumer.name, cid: consumer.cid, ipMode: newIpMode, ipAddresses: newIpAddresses, sequenceErrors: consumer.sequenceErrors, state: consumer.notifiedState, moduleIdentifiers: consumer.moduleIdentifiers)) }
     |                                                                                                                                                       `- warning: capture of 'newIpMode' with non-sendable type 'OTPIPMode' in a '@Sendable' closure
1843 |
1844 |             self.consumers[index].ipAddresses = newIpAddresses
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Network/NetworkDefinitions.swift:60:13: note: consider making enum 'OTPIPMode' conform to the 'Sendable' protocol
 58 |
 59 | */
 60 | public enum OTPIPMode: String, CaseIterable {
    |             `- note: consider making enum 'OTPIPMode' conform to the 'Sendable' protocol
 61 |
 62 |     /// The `Component` should only use IPv4.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1889:39: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1887 |             if self._isConnected != false {
1888 |                 self._isConnected = false
1889 |                 delegateQueue.async { self.producerDelegate?.disconnected(self, with: error) }
     |                                       `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1890 |             }
1891 |         }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1902:31: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1900 |     */
1901 |     func debugSocketLog(_ logMessage: String) {
1902 |         delegateQueue.async { self.debugDelegate?.debugSocketLog(logMessage) }
     |                               `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1903 |     }
1904 |
[29/38] Compiling OTPKit AdvertismentLayer.swift
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:793:40: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
 791 |             }
 792 |
 793 |             self.delegateQueue.async { self.debugDelegate?.debugLog("Reset \(systemNumbers?.count ?? Int(SystemNumber.maxSystemNumber)) transform message folio numbers to \(FolioNumber.min)") }
     |                                        `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
 794 |         }
 795 |     }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:811:49: warning: capture of 'self' with non-sendable type 'OTPProducer?' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
 809 |
 810 |                     // notify the debug delegate
 811 |                     self?.delegateQueue.async { self?.debugDelegate?.debugLog("Completed initial wait for module advertisement messages") }
     |                                                 `- warning: capture of 'self' with non-sendable type 'OTPProducer?' in a '@Sendable' closure
 812 |
 813 |                     // start the transform heartbeat
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:811:49: warning: reference to captured var 'self' in concurrently-executing code
 809 |
 810 |                     // notify the debug delegate
 811 |                     self?.delegateQueue.async { self?.debugDelegate?.debugLog("Completed initial wait for module advertisement messages") }
     |                                                 `- warning: reference to captured var 'self' in concurrently-executing code
 812 |
 813 |                     // start the transform heartbeat
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:858:53: warning: capture of 'self' with non-sendable type 'OTPProducer?' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
 856 |
 857 |                         // notify the debug delegate
 858 |                         self?.delegateQueue.async { self?.debugDelegate?.debugLog("Check for stale modules. Resulting modules \(newModuleIdentifiers.map { $0.moduleIdentifier.logDescription }.joined(separator: ", "))") }
     |                                                     `- warning: capture of 'self' with non-sendable type 'OTPProducer?' in a '@Sendable' closure
 859 |
 860 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:858:129: warning: capture of 'newModuleIdentifiers' with non-sendable type '[ModuleIdentifierNotification]' in a '@Sendable' closure
 856 |
 857 |                         // notify the debug delegate
 858 |                         self?.delegateQueue.async { self?.debugDelegate?.debugLog("Check for stale modules. Resulting modules \(newModuleIdentifiers.map { $0.moduleIdentifier.logDescription }.joined(separator: ", "))") }
     |                                                                                                                                 `- warning: capture of 'newModuleIdentifiers' with non-sendable type '[ModuleIdentifierNotification]' in a '@Sendable' closure
 859 |
 860 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Types/ModuleIdentifier.swift:85:8: note: consider making struct 'ModuleIdentifierNotification' conform to the 'Sendable' protocol
 83 | */
 84 |
 85 | struct ModuleIdentifierNotification: Comparable, Hashable {
    |        `- note: consider making struct 'ModuleIdentifierNotification' conform to the 'Sendable' protocol
 86 |
 87 |     /// Identifies the module.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:858:53: warning: reference to captured var 'self' in concurrently-executing code
 856 |
 857 |                         // notify the debug delegate
 858 |                         self?.delegateQueue.async { self?.debugDelegate?.debugLog("Check for stale modules. Resulting modules \(newModuleIdentifiers.map { $0.moduleIdentifier.logDescription }.joined(separator: ", "))") }
     |                                                     `- warning: reference to captured var 'self' in concurrently-executing code
 859 |
 860 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1072:35: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1070 |
1071 |         for consumer in lostConsumers {
1072 |             delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: consumer.name, cid: consumer.cid, ipMode: consumer.ipMode, ipAddresses: consumer.ipAddresses, sequenceErrors: consumer.sequenceErrors, state: .offline, moduleIdentifiers: consumer.moduleIdentifiers)) }
     |                                   `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1073 |         }
1074 |
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1072:104: warning: capture of 'consumer' with non-sendable type 'ProducerConsumer' in a '@Sendable' closure
1070 |
1071 |         for consumer in lostConsumers {
1072 |             delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: consumer.name, cid: consumer.cid, ipMode: consumer.ipMode, ipAddresses: consumer.ipAddresses, sequenceErrors: consumer.sequenceErrors, state: .offline, moduleIdentifiers: consumer.moduleIdentifiers)) }
     |                                                                                                        `- warning: capture of 'consumer' with non-sendable type 'ProducerConsumer' in a '@Sendable' closure
1073 |         }
1074 |
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/ProducerConsumer.swift:36:8: note: consider making struct 'ProducerConsumer' conform to the 'Sendable' protocol
 34 | */
 35 |
 36 | struct ProducerConsumer: Equatable {
    |        `- note: consider making struct 'ProducerConsumer' conform to the 'Sendable' protocol
 37 |
 38 |     /// A globally unique identifier (UUID) representing the consumer, compliant with RFC 4122.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1095:59: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1093 |         DispatchQueue.global().async {
1094 |
1095 |             let previousSystemNumbers = Self.queue.sync { self.systemNumbers }
     |                                                           `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1096 |
1097 |             // get the new system numbers for all points which have modules which have been requested
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1095:59: warning: capture of 'self' with non-sendable type 'OTPProducer' in an isolated closure; this is an error in the Swift 6 language mode
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1093 |         DispatchQueue.global().async {
1094 |
1095 |             let previousSystemNumbers = Self.queue.sync { self.systemNumbers }
     |                                                           `- warning: capture of 'self' with non-sendable type 'OTPProducer' in an isolated closure; this is an error in the Swift 6 language mode
1096 |
1097 |             // get the new system numbers for all points which have modules which have been requested
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1098:51: warning: capture of 'self' with non-sendable type 'OTPProducer' in an isolated closure; this is an error in the Swift 6 language mode
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1096 |
1097 |             // get the new system numbers for all points which have modules which have been requested
1098 |             let systemNumbers = Self.queue.sync { self.points.filter { !$0.modules.isEmpty && $0.hasRequestedModules }.map { $0.address.systemNumber } }
     |                                                   `- warning: capture of 'self' with non-sendable type 'OTPProducer' in an isolated closure; this is an error in the Swift 6 language mode
1099 |             let newSystemNumbers = Array(Set(systemNumbers)).sorted()
1100 |
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1105:21: warning: capture of 'self' with non-sendable type 'OTPProducer' in an isolated closure; this is an error in the Swift 6 language mode
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1103 |
1104 |                 Self.queue.sync(flags: .barrier) {
1105 |                     self.systemNumbers = newSystemNumbers
     |                     `- warning: capture of 'self' with non-sendable type 'OTPProducer' in an isolated closure; this is an error in the Swift 6 language mode
1106 |                 }
1107 |
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1111:21: warning: capture of 'self' with non-sendable type 'OTPProducer' in an isolated closure; this is an error in the Swift 6 language mode
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1109 |
1110 |                 Self.queue.sync(flags: .barrier) {
1111 |                     self.systemAdvertisementMessage = systemAdvertisementMessage
     |                     `- warning: capture of 'self' with non-sendable type 'OTPProducer' in an isolated closure; this is an error in the Swift 6 language mode
1112 |                 }
1113 |
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1127:70: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1125 |         DispatchQueue.global().async {
1126 |
1127 |             let previousAddressPointDescriptions = Self.queue.sync { self.nameAddressPointDescriptions }
     |                                                                      `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1128 |
1129 |             // get the new address point descriptions (must not be empty), and the point should have modules
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1127:70: warning: capture of 'self' with non-sendable type 'OTPProducer' in an isolated closure; this is an error in the Swift 6 language mode
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1125 |         DispatchQueue.global().async {
1126 |
1127 |             let previousAddressPointDescriptions = Self.queue.sync { self.nameAddressPointDescriptions }
     |                                                                      `- warning: capture of 'self' with non-sendable type 'OTPProducer' in an isolated closure; this is an error in the Swift 6 language mode
1128 |
1129 |             // get the new address point descriptions (must not be empty), and the point should have modules
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1131:62: warning: capture of 'self' with non-sendable type 'OTPProducer' in an isolated closure; this is an error in the Swift 6 language mode
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1129 |             // get the new address point descriptions (must not be empty), and the point should have modules
1130 |
1131 |             let addressPointDescriptions = Self.queue.sync { self.points.filter { !$0.modules.isEmpty && !$0.name.isEmpty }.map { AddressPointDescription(address: $0.address, pointName: $0.name) } }
     |                                                              `- warning: capture of 'self' with non-sendable type 'OTPProducer' in an isolated closure; this is an error in the Swift 6 language mode
1132 |             let newAddressPointDescriptions = Array(Set(addressPointDescriptions)).sorted()
1133 |
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1161:21: warning: capture of 'self' with non-sendable type 'OTPProducer' in an isolated closure; this is an error in the Swift 6 language mode
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1159 |
1160 |                 Self.queue.sync(flags: .barrier) {
1161 |                     self.nameAddressPointDescriptions = newAddressPointDescriptions
     |                     `- warning: capture of 'self' with non-sendable type 'OTPProducer' in an isolated closure; this is an error in the Swift 6 language mode
1162 |                 }
1163 |
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1167:21: warning: capture of 'self' with non-sendable type 'OTPProducer' in an isolated closure; this is an error in the Swift 6 language mode
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1165 |
1166 |                 Self.queue.sync(flags: .barrier) {
1167 |                     self.nameAdvertisementMessages = nameAdvertisementMessages
     |                     `- warning: capture of 'self' with non-sendable type 'OTPProducer' in an isolated closure; this is an error in the Swift 6 language mode
1168 |                 }
1169 |
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1496:47: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1494 |
1495 |                         // notify the debug delegate
1496 |                         delegateQueue.async { self.debugDelegate?.debugLog("Received module advertisement message from \(otpLayer.componentName) \(otpLayer.cid)") }
     |                                               `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1497 |
1498 |                         // try to extract a module advertisement layer
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1502:47: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1500 |
1501 |                         // notify the debug delegate
1502 |                         delegateQueue.async { self.debugDelegate?.debugLog("Received module identifiers \(moduleAdvertisementLayer.moduleIdentifiers.map { $0.logDescription }.joined(separator: ", ")) from \(otpLayer.cid)") }
     |                                               `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1503 |
1504 |                         let now = Date()
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1502:107: warning: capture of 'moduleAdvertisementLayer' with non-sendable type 'ModuleAdvertismentLayer' in a '@Sendable' closure
1500 |
1501 |                         // notify the debug delegate
1502 |                         delegateQueue.async { self.debugDelegate?.debugLog("Received module identifiers \(moduleAdvertisementLayer.moduleIdentifiers.map { $0.logDescription }.joined(separator: ", ")) from \(otpLayer.cid)") }
     |                                                                                                           `- warning: capture of 'moduleAdvertisementLayer' with non-sendable type 'ModuleAdvertismentLayer' in a '@Sendable' closure
1503 |
1504 |                         let now = Date()
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Layers/ModuleAdvertisementLayer.swift:34:8: note: consider making struct 'ModuleAdvertismentLayer' conform to the 'Sendable' protocol
 32 | */
 33 |
 34 | struct ModuleAdvertismentLayer {
    |        `- note: consider making struct 'ModuleAdvertismentLayer' conform to the 'Sendable' protocol
 35 |
 36 |     /// The offset from which length counting begins.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1527:47: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1525 |
1526 |                         // notify the debug delegate
1527 |                         delegateQueue.async { self.debugDelegate?.debugLog("Resulting modules \(newModuleIdentifiers.map { $0.moduleIdentifier.logDescription }.joined(separator: ", "))") }
     |                                               `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1528 |
1529 |                         // only rebuild if the identifiers are different
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1527:97: warning: capture of 'newModuleIdentifiers' with non-sendable type '[ModuleIdentifierNotification]' in a '@Sendable' closure
1525 |
1526 |                         // notify the debug delegate
1527 |                         delegateQueue.async { self.debugDelegate?.debugLog("Resulting modules \(newModuleIdentifiers.map { $0.moduleIdentifier.logDescription }.joined(separator: ", "))") }
     |                                                                                                 `- warning: capture of 'newModuleIdentifiers' with non-sendable type '[ModuleIdentifierNotification]' in a '@Sendable' closure
1528 |
1529 |                         // only rebuild if the identifiers are different
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Types/ModuleIdentifier.swift:85:8: note: consider making struct 'ModuleIdentifierNotification' conform to the 'Sendable' protocol
 83 | */
 84 |
 85 | struct ModuleIdentifierNotification: Comparable, Hashable {
    |        `- note: consider making struct 'ModuleIdentifierNotification' conform to the 'Sendable' protocol
 86 |
 87 |     /// Identifies the module.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1582:60: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1580 |
1581 |                                 // notify the delegate of the consumer status
1582 |                                 self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: consumer.cid, ipMode: existingComponentIPMode, ipAddresses: newIpAddresses, sequenceErrors: consumer.sequenceErrors, state: notifiedState, moduleIdentifiers: moduleAdvertisementLayer.moduleIdentifiers)) }
     |                                                            `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1583 |
1584 |                                 // update both name and ip when this happens
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1582:158: warning: capture of 'consumer' with non-sendable type 'ProducerConsumer' in a '@Sendable' closure
1580 |
1581 |                                 // notify the delegate of the consumer status
1582 |                                 self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: consumer.cid, ipMode: existingComponentIPMode, ipAddresses: newIpAddresses, sequenceErrors: consumer.sequenceErrors, state: notifiedState, moduleIdentifiers: moduleAdvertisementLayer.moduleIdentifiers)) }
     |                                                                                                                                                              `- warning: capture of 'consumer' with non-sendable type 'ProducerConsumer' in a '@Sendable' closure
1583 |
1584 |                                 // update both name and ip when this happens
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/ProducerConsumer.swift:36:8: note: consider making struct 'ProducerConsumer' conform to the 'Sendable' protocol
 34 | */
 35 |
 36 | struct ProducerConsumer: Equatable {
    |        `- note: consider making struct 'ProducerConsumer' conform to the 'Sendable' protocol
 37 |
 38 |     /// A globally unique identifier (UUID) representing the consumer, compliant with RFC 4122.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1582:180: warning: capture of 'existingComponentIPMode' with non-sendable type 'OTPIPMode' in a '@Sendable' closure
1580 |
1581 |                                 // notify the delegate of the consumer status
1582 |                                 self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: consumer.cid, ipMode: existingComponentIPMode, ipAddresses: newIpAddresses, sequenceErrors: consumer.sequenceErrors, state: notifiedState, moduleIdentifiers: moduleAdvertisementLayer.moduleIdentifiers)) }
     |                                                                                                                                                                                    `- warning: capture of 'existingComponentIPMode' with non-sendable type 'OTPIPMode' in a '@Sendable' closure
1583 |
1584 |                                 // update both name and ip when this happens
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Network/NetworkDefinitions.swift:60:13: note: consider making enum 'OTPIPMode' conform to the 'Sendable' protocol
 58 |
 59 | */
 60 | public enum OTPIPMode: String, CaseIterable {
    |             `- note: consider making enum 'OTPIPMode' conform to the 'Sendable' protocol
 61 |
 62 |     /// The `Component` should only use IPv4.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1582:282: warning: capture of 'notifiedState' with non-sendable type 'OTPComponentState' in a '@Sendable' closure
1580 |
1581 |                                 // notify the delegate of the consumer status
1582 |                                 self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: consumer.cid, ipMode: existingComponentIPMode, ipAddresses: newIpAddresses, sequenceErrors: consumer.sequenceErrors, state: notifiedState, moduleIdentifiers: moduleAdvertisementLayer.moduleIdentifiers)) }
     |                                                                                                                                                                                                                                                                                          `- warning: capture of 'notifiedState' with non-sendable type 'OTPComponentState' in a '@Sendable' closure
1583 |
1584 |                                 // update both name and ip when this happens
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/ComponentStatus.swift:35:13: note: consider making enum 'OTPComponentState' conform to the 'Sendable' protocol
 33 |
 34 | */
 35 | public enum OTPComponentState: String {
    |             `- note: consider making enum 'OTPComponentState' conform to the 'Sendable' protocol
 36 |
 37 |     /// This component is offline.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1582:316: warning: capture of 'moduleAdvertisementLayer' with non-sendable type 'ModuleAdvertismentLayer' in a '@Sendable' closure
1580 |
1581 |                                 // notify the delegate of the consumer status
1582 |                                 self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: consumer.cid, ipMode: existingComponentIPMode, ipAddresses: newIpAddresses, sequenceErrors: consumer.sequenceErrors, state: notifiedState, moduleIdentifiers: moduleAdvertisementLayer.moduleIdentifiers)) }
     |                                                                                                                                                                                                                                                                                                                            `- warning: capture of 'moduleAdvertisementLayer' with non-sendable type 'ModuleAdvertismentLayer' in a '@Sendable' closure
1583 |
1584 |                                 // update both name and ip when this happens
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Layers/ModuleAdvertisementLayer.swift:34:8: note: consider making struct 'ModuleAdvertismentLayer' conform to the 'Sendable' protocol
 32 | */
 33 |
 34 | struct ModuleAdvertismentLayer {
    |        `- note: consider making struct 'ModuleAdvertismentLayer' conform to the 'Sendable' protocol
 35 |
 36 |     /// The offset from which length counting begins.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1600:56: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1598 |
1599 |                             // notify the delegate of the consumer status
1600 |                             self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: otpLayer.cid, ipMode: newComponentIPMode, ipAddresses: [hostname], sequenceErrors: consumer.sequenceErrors, state: .advertising, moduleIdentifiers: moduleAdvertisementLayer.moduleIdentifiers)) }
     |                                                        `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1601 |
1602 |                         }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1600:176: warning: capture of 'newComponentIPMode' with non-sendable type 'OTPIPMode' in a '@Sendable' closure
1598 |
1599 |                             // notify the delegate of the consumer status
1600 |                             self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: otpLayer.cid, ipMode: newComponentIPMode, ipAddresses: [hostname], sequenceErrors: consumer.sequenceErrors, state: .advertising, moduleIdentifiers: moduleAdvertisementLayer.moduleIdentifiers)) }
     |                                                                                                                                                                                `- warning: capture of 'newComponentIPMode' with non-sendable type 'OTPIPMode' in a '@Sendable' closure
1601 |
1602 |                         }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Network/NetworkDefinitions.swift:60:13: note: consider making enum 'OTPIPMode' conform to the 'Sendable' protocol
 58 |
 59 | */
 60 | public enum OTPIPMode: String, CaseIterable {
    |             `- note: consider making enum 'OTPIPMode' conform to the 'Sendable' protocol
 61 |
 62 |     /// The `Component` should only use IPv4.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1600:237: warning: capture of 'consumer' with non-sendable type 'ProducerConsumer' in a '@Sendable' closure
1598 |
1599 |                             // notify the delegate of the consumer status
1600 |                             self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: otpLayer.cid, ipMode: newComponentIPMode, ipAddresses: [hostname], sequenceErrors: consumer.sequenceErrors, state: .advertising, moduleIdentifiers: moduleAdvertisementLayer.moduleIdentifiers)) }
     |                                                                                                                                                                                                                                             `- warning: capture of 'consumer' with non-sendable type 'ProducerConsumer' in a '@Sendable' closure
1601 |
1602 |                         }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/ProducerConsumer.swift:36:8: note: consider making struct 'ProducerConsumer' conform to the 'Sendable' protocol
 34 | */
 35 |
 36 | struct ProducerConsumer: Equatable {
    |        `- note: consider making struct 'ProducerConsumer' conform to the 'Sendable' protocol
 37 |
 38 |     /// A globally unique identifier (UUID) representing the consumer, compliant with RFC 4122.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1600:302: warning: capture of 'moduleAdvertisementLayer' with non-sendable type 'ModuleAdvertismentLayer' in a '@Sendable' closure
1598 |
1599 |                             // notify the delegate of the consumer status
1600 |                             self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: otpLayer.cid, ipMode: newComponentIPMode, ipAddresses: [hostname], sequenceErrors: consumer.sequenceErrors, state: .advertising, moduleIdentifiers: moduleAdvertisementLayer.moduleIdentifiers)) }
     |                                                                                                                                                                                                                                                                                                              `- warning: capture of 'moduleAdvertisementLayer' with non-sendable type 'ModuleAdvertismentLayer' in a '@Sendable' closure
1601 |
1602 |                         }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Layers/ModuleAdvertisementLayer.swift:34:8: note: consider making struct 'ModuleAdvertismentLayer' conform to the 'Sendable' protocol
 32 | */
 33 |
 34 | struct ModuleAdvertismentLayer {
    |        `- note: consider making struct 'ModuleAdvertismentLayer' conform to the 'Sendable' protocol
 35 |
 36 |     /// The offset from which length counting begins.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1650:60: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1648 |
1649 |                                 // notify the delegate of the consumer status
1650 |                                 self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: consumer.cid, ipMode: existingComponentIPMode, ipAddresses: newIpAddresses, sequenceErrors: consumer.sequenceErrors, state: notifiedState, moduleIdentifiers: moduleIdentifiers)) }
     |                                                            `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1651 |
1652 |                                 // update both name and ip when this happens
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1650:158: warning: capture of 'consumer' with non-sendable type 'ProducerConsumer' in a '@Sendable' closure
1648 |
1649 |                                 // notify the delegate of the consumer status
1650 |                                 self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: consumer.cid, ipMode: existingComponentIPMode, ipAddresses: newIpAddresses, sequenceErrors: consumer.sequenceErrors, state: notifiedState, moduleIdentifiers: moduleIdentifiers)) }
     |                                                                                                                                                              `- warning: capture of 'consumer' with non-sendable type 'ProducerConsumer' in a '@Sendable' closure
1651 |
1652 |                                 // update both name and ip when this happens
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/ProducerConsumer.swift:36:8: note: consider making struct 'ProducerConsumer' conform to the 'Sendable' protocol
 34 | */
 35 |
 36 | struct ProducerConsumer: Equatable {
    |        `- note: consider making struct 'ProducerConsumer' conform to the 'Sendable' protocol
 37 |
 38 |     /// A globally unique identifier (UUID) representing the consumer, compliant with RFC 4122.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1650:180: warning: capture of 'existingComponentIPMode' with non-sendable type 'OTPIPMode' in a '@Sendable' closure
1648 |
1649 |                                 // notify the delegate of the consumer status
1650 |                                 self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: consumer.cid, ipMode: existingComponentIPMode, ipAddresses: newIpAddresses, sequenceErrors: consumer.sequenceErrors, state: notifiedState, moduleIdentifiers: moduleIdentifiers)) }
     |                                                                                                                                                                                    `- warning: capture of 'existingComponentIPMode' with non-sendable type 'OTPIPMode' in a '@Sendable' closure
1651 |
1652 |                                 // update both name and ip when this happens
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Network/NetworkDefinitions.swift:60:13: note: consider making enum 'OTPIPMode' conform to the 'Sendable' protocol
 58 |
 59 | */
 60 | public enum OTPIPMode: String, CaseIterable {
    |             `- note: consider making enum 'OTPIPMode' conform to the 'Sendable' protocol
 61 |
 62 |     /// The `Component` should only use IPv4.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1650:282: warning: capture of 'notifiedState' with non-sendable type 'OTPComponentState' in a '@Sendable' closure
1648 |
1649 |                                 // notify the delegate of the consumer status
1650 |                                 self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: consumer.cid, ipMode: existingComponentIPMode, ipAddresses: newIpAddresses, sequenceErrors: consumer.sequenceErrors, state: notifiedState, moduleIdentifiers: moduleIdentifiers)) }
     |                                                                                                                                                                                                                                                                                          `- warning: capture of 'notifiedState' with non-sendable type 'OTPComponentState' in a '@Sendable' closure
1651 |
1652 |                                 // update both name and ip when this happens
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/ComponentStatus.swift:35:13: note: consider making enum 'OTPComponentState' conform to the 'Sendable' protocol
 33 |
 34 | */
 35 | public enum OTPComponentState: String {
    |             `- note: consider making enum 'OTPComponentState' conform to the 'Sendable' protocol
 36 |
 37 |     /// This component is offline.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1650:316: warning: capture of 'moduleIdentifiers' with non-sendable type '[OTPModuleIdentifier]' in a '@Sendable' closure
1648 |
1649 |                                 // notify the delegate of the consumer status
1650 |                                 self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: consumer.cid, ipMode: existingComponentIPMode, ipAddresses: newIpAddresses, sequenceErrors: consumer.sequenceErrors, state: notifiedState, moduleIdentifiers: moduleIdentifiers)) }
     |                                                                                                                                                                                                                                                                                                                            `- warning: capture of 'moduleIdentifiers' with non-sendable type '[OTPModuleIdentifier]' in a '@Sendable' closure
1651 |
1652 |                                 // update both name and ip when this happens
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Types/ModuleIdentifier.swift:34:15: note: consider making struct 'OTPModuleIdentifier' conform to the 'Sendable' protocol
 32 | */
 33 |
 34 | public struct OTPModuleIdentifier: Comparable, Hashable {
    |               `- note: consider making struct 'OTPModuleIdentifier' conform to the 'Sendable' protocol
 35 |
 36 |     /**
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1667:56: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1665 |
1666 |                             // notify the delegate of the consumer status
1667 |                             self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: otpLayer.cid, ipMode: newComponentIPMode, ipAddresses: [hostname], sequenceErrors: consumer.sequenceErrors, state: .advertising, moduleIdentifiers: [])) }
     |                                                        `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1668 |
1669 |
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1667:176: warning: capture of 'newComponentIPMode' with non-sendable type 'OTPIPMode' in a '@Sendable' closure
1665 |
1666 |                             // notify the delegate of the consumer status
1667 |                             self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: otpLayer.cid, ipMode: newComponentIPMode, ipAddresses: [hostname], sequenceErrors: consumer.sequenceErrors, state: .advertising, moduleIdentifiers: [])) }
     |                                                                                                                                                                                `- warning: capture of 'newComponentIPMode' with non-sendable type 'OTPIPMode' in a '@Sendable' closure
1668 |
1669 |
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Network/NetworkDefinitions.swift:60:13: note: consider making enum 'OTPIPMode' conform to the 'Sendable' protocol
 58 |
 59 | */
 60 | public enum OTPIPMode: String, CaseIterable {
    |             `- note: consider making enum 'OTPIPMode' conform to the 'Sendable' protocol
 61 |
 62 |     /// The `Component` should only use IPv4.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1667:237: warning: capture of 'consumer' with non-sendable type 'ProducerConsumer' in a '@Sendable' closure
1665 |
1666 |                             // notify the delegate of the consumer status
1667 |                             self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: otpLayer.cid, ipMode: newComponentIPMode, ipAddresses: [hostname], sequenceErrors: consumer.sequenceErrors, state: .advertising, moduleIdentifiers: [])) }
     |                                                                                                                                                                                                                                             `- warning: capture of 'consumer' with non-sendable type 'ProducerConsumer' in a '@Sendable' closure
1668 |
1669 |
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/ProducerConsumer.swift:36:8: note: consider making struct 'ProducerConsumer' conform to the 'Sendable' protocol
 34 | */
 35 |
 36 | struct ProducerConsumer: Equatable {
    |        `- note: consider making struct 'ProducerConsumer' conform to the 'Sendable' protocol
 37 |
 38 |     /// A globally unique identifier (UUID) representing the consumer, compliant with RFC 4122.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1673:47: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1671 |
1672 |                         // notify the debug delegate
1673 |                         delegateQueue.async { self.debugDelegate?.debugLog("Received name advertisement message from \(otpLayer.componentName) \(otpLayer.cid)") }
     |                                               `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1674 |
1675 |                     case .system:
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1721:60: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1719 |
1720 |                                 // notify the delegate of the consumer status
1721 |                                 self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: consumer.cid, ipMode: existingComponentIPMode, ipAddresses: newIpAddresses, sequenceErrors: consumer.sequenceErrors, state: notifiedState, moduleIdentifiers: moduleIdentifiers)) }
     |                                                            `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1722 |
1723 |                                 // update both name and ip when this happens
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1721:158: warning: capture of 'consumer' with non-sendable type 'ProducerConsumer' in a '@Sendable' closure
1719 |
1720 |                                 // notify the delegate of the consumer status
1721 |                                 self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: consumer.cid, ipMode: existingComponentIPMode, ipAddresses: newIpAddresses, sequenceErrors: consumer.sequenceErrors, state: notifiedState, moduleIdentifiers: moduleIdentifiers)) }
     |                                                                                                                                                              `- warning: capture of 'consumer' with non-sendable type 'ProducerConsumer' in a '@Sendable' closure
1722 |
1723 |                                 // update both name and ip when this happens
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/ProducerConsumer.swift:36:8: note: consider making struct 'ProducerConsumer' conform to the 'Sendable' protocol
 34 | */
 35 |
 36 | struct ProducerConsumer: Equatable {
    |        `- note: consider making struct 'ProducerConsumer' conform to the 'Sendable' protocol
 37 |
 38 |     /// A globally unique identifier (UUID) representing the consumer, compliant with RFC 4122.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1721:180: warning: capture of 'existingComponentIPMode' with non-sendable type 'OTPIPMode' in a '@Sendable' closure
1719 |
1720 |                                 // notify the delegate of the consumer status
1721 |                                 self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: consumer.cid, ipMode: existingComponentIPMode, ipAddresses: newIpAddresses, sequenceErrors: consumer.sequenceErrors, state: notifiedState, moduleIdentifiers: moduleIdentifiers)) }
     |                                                                                                                                                                                    `- warning: capture of 'existingComponentIPMode' with non-sendable type 'OTPIPMode' in a '@Sendable' closure
1722 |
1723 |                                 // update both name and ip when this happens
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Network/NetworkDefinitions.swift:60:13: note: consider making enum 'OTPIPMode' conform to the 'Sendable' protocol
 58 |
 59 | */
 60 | public enum OTPIPMode: String, CaseIterable {
    |             `- note: consider making enum 'OTPIPMode' conform to the 'Sendable' protocol
 61 |
 62 |     /// The `Component` should only use IPv4.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1721:282: warning: capture of 'notifiedState' with non-sendable type 'OTPComponentState' in a '@Sendable' closure
1719 |
1720 |                                 // notify the delegate of the consumer status
1721 |                                 self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: consumer.cid, ipMode: existingComponentIPMode, ipAddresses: newIpAddresses, sequenceErrors: consumer.sequenceErrors, state: notifiedState, moduleIdentifiers: moduleIdentifiers)) }
     |                                                                                                                                                                                                                                                                                          `- warning: capture of 'notifiedState' with non-sendable type 'OTPComponentState' in a '@Sendable' closure
1722 |
1723 |                                 // update both name and ip when this happens
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/ComponentStatus.swift:35:13: note: consider making enum 'OTPComponentState' conform to the 'Sendable' protocol
 33 |
 34 | */
 35 | public enum OTPComponentState: String {
    |             `- note: consider making enum 'OTPComponentState' conform to the 'Sendable' protocol
 36 |
 37 |     /// This component is offline.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1721:316: warning: capture of 'moduleIdentifiers' with non-sendable type '[OTPModuleIdentifier]' in a '@Sendable' closure
1719 |
1720 |                                 // notify the delegate of the consumer status
1721 |                                 self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: consumer.cid, ipMode: existingComponentIPMode, ipAddresses: newIpAddresses, sequenceErrors: consumer.sequenceErrors, state: notifiedState, moduleIdentifiers: moduleIdentifiers)) }
     |                                                                                                                                                                                                                                                                                                                            `- warning: capture of 'moduleIdentifiers' with non-sendable type '[OTPModuleIdentifier]' in a '@Sendable' closure
1722 |
1723 |                                 // update both name and ip when this happens
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Types/ModuleIdentifier.swift:34:15: note: consider making struct 'OTPModuleIdentifier' conform to the 'Sendable' protocol
 32 | */
 33 |
 34 | public struct OTPModuleIdentifier: Comparable, Hashable {
    |               `- note: consider making struct 'OTPModuleIdentifier' conform to the 'Sendable' protocol
 35 |
 36 |     /**
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1738:56: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1736 |
1737 |                             // notify the delegate of the consumer status
1738 |                             self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: otpLayer.cid, ipMode: newComponentIPMode, ipAddresses: [hostname], sequenceErrors: consumer.sequenceErrors, state: .advertising, moduleIdentifiers: [])) }
     |                                                        `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1739 |
1740 |                         }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1738:176: warning: capture of 'newComponentIPMode' with non-sendable type 'OTPIPMode' in a '@Sendable' closure
1736 |
1737 |                             // notify the delegate of the consumer status
1738 |                             self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: otpLayer.cid, ipMode: newComponentIPMode, ipAddresses: [hostname], sequenceErrors: consumer.sequenceErrors, state: .advertising, moduleIdentifiers: [])) }
     |                                                                                                                                                                                `- warning: capture of 'newComponentIPMode' with non-sendable type 'OTPIPMode' in a '@Sendable' closure
1739 |
1740 |                         }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Network/NetworkDefinitions.swift:60:13: note: consider making enum 'OTPIPMode' conform to the 'Sendable' protocol
 58 |
 59 | */
 60 | public enum OTPIPMode: String, CaseIterable {
    |             `- note: consider making enum 'OTPIPMode' conform to the 'Sendable' protocol
 61 |
 62 |     /// The `Component` should only use IPv4.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1738:237: warning: capture of 'consumer' with non-sendable type 'ProducerConsumer' in a '@Sendable' closure
1736 |
1737 |                             // notify the delegate of the consumer status
1738 |                             self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: otpLayer.componentName, cid: otpLayer.cid, ipMode: newComponentIPMode, ipAddresses: [hostname], sequenceErrors: consumer.sequenceErrors, state: .advertising, moduleIdentifiers: [])) }
     |                                                                                                                                                                                                                                             `- warning: capture of 'consumer' with non-sendable type 'ProducerConsumer' in a '@Sendable' closure
1739 |
1740 |                         }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/ProducerConsumer.swift:36:8: note: consider making struct 'ProducerConsumer' conform to the 'Sendable' protocol
 34 | */
 35 |
 36 | struct ProducerConsumer: Equatable {
    |        `- note: consider making struct 'ProducerConsumer' conform to the 'Sendable' protocol
 37 |
 38 |     /// A globally unique identifier (UUID) representing the consumer, compliant with RFC 4122.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1743:47: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1741 |
1742 |                         // notify the debug delegate
1743 |                         delegateQueue.async { self.debugDelegate?.debugLog("Received system advertisement message from \(otpLayer.componentName) \(otpLayer.cid)") }
     |                                               `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1744 |
1745 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1772:52: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1770 |
1771 |                         // notify the delegate
1772 |                         self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(consumerStatus) }
     |                                                    `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1773 |
1774 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1772:97: warning: capture of 'consumerStatus' with non-sendable type 'OTPConsumerStatus' in a '@Sendable' closure
1770 |
1771 |                         // notify the delegate
1772 |                         self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(consumerStatus) }
     |                                                                                                 `- warning: capture of 'consumerStatus' with non-sendable type 'OTPConsumerStatus' in a '@Sendable' closure
1773 |
1774 |                     }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/ComponentStatus.swift:143:15: note: consider making struct 'OTPConsumerStatus' conform to the 'Sendable' protocol
141 | */
142 |
143 | public struct OTPConsumerStatus: OTPComponentStatus {
    |               `- note: consider making struct 'OTPConsumerStatus' conform to the 'Sendable' protocol
144 |
145 |     /// A globally unique identifier (UUID) representing the consumer, compliant with RFC 4122.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1779:43: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1777 |
1778 |                     // there was an error in the otp layer
1779 |                     delegateQueue.async { self.protocolErrorDelegate?.layerError(error.logDescription) }
     |                                           `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1780 |
1781 |                 }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1786:39: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1784 |
1785 |                 // there was an error in the advertisement layer
1786 |                 delegateQueue.async { self.protocolErrorDelegate?.layerError(error.logDescription) }
     |                                       `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1787 |
1788 |             } catch let error as ModuleAdvertisementLayerValidationError {
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1791:39: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1789 |
1790 |                 // there was an error in the module advertisement layer
1791 |                 delegateQueue.async { self.protocolErrorDelegate?.layerError(error.logDescription) }
     |                                       `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1792 |
1793 |             } catch let error as SystemAdvertisementLayerValidationError {
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1796:39: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1794 |
1795 |                 // there was an error in the system advertisement layer
1796 |                 delegateQueue.async { self.protocolErrorDelegate?.layerError(error.logDescription) }
     |                                       `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1797 |
1798 |             } catch let error as NameAdvertisementLayerValidationError {
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1801:39: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1799 |
1800 |                 // there was an error in the name advertisement layer
1801 |                 delegateQueue.async { self.protocolErrorDelegate?.layerError(error.logDescription) }
     |                                       `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1802 |
1803 |             } catch let error as TransformLayerValidationError {
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1806:39: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1804 |
1805 |                 // there was an error in the transform layer
1806 |                 delegateQueue.async { self.protocolErrorDelegate?.layerError(error.logDescription) }
     |                                       `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1807 |
1808 |             } catch let error {
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1811:39: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1809 |
1810 |                 // there was an unknown error
1811 |                 delegateQueue.async { self.protocolErrorDelegate?.unknownError(error.localizedDescription) }
     |                                       `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1812 |
1813 |             }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1842:40: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1840 |
1841 |             // notify the delegate of the consumer status
1842 |             self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: consumer.name, cid: consumer.cid, ipMode: newIpMode, ipAddresses: newIpAddresses, sequenceErrors: consumer.sequenceErrors, state: consumer.notifiedState, moduleIdentifiers: consumer.moduleIdentifiers)) }
     |                                        `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1843 |
1844 |             self.consumers[index].ipAddresses = newIpAddresses
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1842:109: warning: capture of 'consumer' with non-sendable type 'ProducerConsumer' in a '@Sendable' closure
1840 |
1841 |             // notify the delegate of the consumer status
1842 |             self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: consumer.name, cid: consumer.cid, ipMode: newIpMode, ipAddresses: newIpAddresses, sequenceErrors: consumer.sequenceErrors, state: consumer.notifiedState, moduleIdentifiers: consumer.moduleIdentifiers)) }
     |                                                                                                             `- warning: capture of 'consumer' with non-sendable type 'ProducerConsumer' in a '@Sendable' closure
1843 |
1844 |             self.consumers[index].ipAddresses = newIpAddresses
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/ProducerConsumer.swift:36:8: note: consider making struct 'ProducerConsumer' conform to the 'Sendable' protocol
 34 | */
 35 |
 36 | struct ProducerConsumer: Equatable {
    |        `- note: consider making struct 'ProducerConsumer' conform to the 'Sendable' protocol
 37 |
 38 |     /// A globally unique identifier (UUID) representing the consumer, compliant with RFC 4122.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1842:151: warning: capture of 'newIpMode' with non-sendable type 'OTPIPMode' in a '@Sendable' closure
1840 |
1841 |             // notify the delegate of the consumer status
1842 |             self.delegateQueue.async { self.producerDelegate?.consumerStatusChanged(OTPConsumerStatus(name: consumer.name, cid: consumer.cid, ipMode: newIpMode, ipAddresses: newIpAddresses, sequenceErrors: consumer.sequenceErrors, state: consumer.notifiedState, moduleIdentifiers: consumer.moduleIdentifiers)) }
     |                                                                                                                                                       `- warning: capture of 'newIpMode' with non-sendable type 'OTPIPMode' in a '@Sendable' closure
1843 |
1844 |             self.consumers[index].ipAddresses = newIpAddresses
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Network/NetworkDefinitions.swift:60:13: note: consider making enum 'OTPIPMode' conform to the 'Sendable' protocol
 58 |
 59 | */
 60 | public enum OTPIPMode: String, CaseIterable {
    |             `- note: consider making enum 'OTPIPMode' conform to the 'Sendable' protocol
 61 |
 62 |     /// The `Component` should only use IPv4.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1889:39: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1887 |             if self._isConnected != false {
1888 |                 self._isConnected = false
1889 |                 delegateQueue.async { self.producerDelegate?.disconnected(self, with: error) }
     |                                       `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1890 |             }
1891 |         }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Producer.swift:1902:31: warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
  83 | */
  84 |
  85 | final public class OTPProducer: Component {
     |                    `- note: class 'OTPProducer' does not conform to the 'Sendable' protocol
  86 |
  87 |     /// The interval between checking for data loss.
     :
1900 |     */
1901 |     func debugSocketLog(_ logMessage: String) {
1902 |         delegateQueue.async { self.debugDelegate?.debugSocketLog(logMessage) }
     |                               `- warning: capture of 'self' with non-sendable type 'OTPProducer' in a '@Sendable' closure
1903 |     }
1904 |
[30/38] Compiling OTPKit GeneralDefinitions.swift
[31/38] Compiling OTPKit Math.swift
[32/38] Compiling OTPKit Module.swift
[33/38] Compiling OTPKit PointLayer.swift
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Layers/PointLayer.swift:233:43: warning: capture of 'delegate' with non-sendable type '(any OTPComponentProtocolErrorDelegate)?' in a '@Sendable' closure
231 |
232 |                     // notify the consumer of the error
233 |                     delegateQueue.async { delegate?.layerError(error.logDescription) }
    |                                           `- warning: capture of 'delegate' with non-sendable type '(any OTPComponentProtocolErrorDelegate)?' in a '@Sendable' closure
234 |
235 |                     // just return any modules already parsed
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Component.swift:434:17: note: protocol 'OTPComponentProtocolErrorDelegate' does not conform to the 'Sendable' protocol
432 | */
433 |
434 | public protocol OTPComponentProtocolErrorDelegate: AnyObject {
    |                 `- note: protocol 'OTPComponentProtocolErrorDelegate' does not conform to the 'Sendable' protocol
435 |
436 |     /**
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Layers/PointLayer.swift:258:47: warning: capture of 'delegate' with non-sendable type '(any OTPComponentProtocolErrorDelegate)?' in a '@Sendable' closure
256 |
257 |                         // notify the consumer of the error
258 |                         delegateQueue.async { delegate?.layerError(error.logDescription) }
    |                                               `- warning: capture of 'delegate' with non-sendable type '(any OTPComponentProtocolErrorDelegate)?' in a '@Sendable' closure
259 |
260 |                         // just return any modules already parsed
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Component.swift:434:17: note: protocol 'OTPComponentProtocolErrorDelegate' does not conform to the 'Sendable' protocol
432 | */
433 |
434 | public protocol OTPComponentProtocolErrorDelegate: AnyObject {
    |                 `- note: protocol 'OTPComponentProtocolErrorDelegate' does not conform to the 'Sendable' protocol
435 |
436 |     /**
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Layers/PointLayer.swift:273:44: warning: capture of 'delegate' with non-sendable type '(any OTPComponentProtocolErrorDelegate)?' in a '@Sendable' closure
271 |                     break
272 |                 default:
273 |                     delegateQueue.async {  delegate?.layerError(error.logDescription) }
    |                                            `- warning: capture of 'delegate' with non-sendable type '(any OTPComponentProtocolErrorDelegate)?' in a '@Sendable' closure
274 |                 }
275 |
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Component.swift:434:17: note: protocol 'OTPComponentProtocolErrorDelegate' does not conform to the 'Sendable' protocol
432 | */
433 |
434 | public protocol OTPComponentProtocolErrorDelegate: AnyObject {
    |                 `- note: protocol 'OTPComponentProtocolErrorDelegate' does not conform to the 'Sendable' protocol
435 |
436 |     /**
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Layers/SystemAdvertismentLayer.swift:203:43: warning: capture of 'delegate' with non-sendable type '(any OTPComponentProtocolErrorDelegate)?' in a '@Sendable' closure
201 |
202 |                     // notify the consumer of the error
203 |                     delegateQueue.async { delegate?.layerError(error.logDescription) }
    |                                           `- warning: capture of 'delegate' with non-sendable type '(any OTPComponentProtocolErrorDelegate)?' in a '@Sendable' closure
204 |
205 |                 }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Component.swift:434:17: note: protocol 'OTPComponentProtocolErrorDelegate' does not conform to the 'Sendable' protocol
432 | */
433 |
434 | public protocol OTPComponentProtocolErrorDelegate: AnyObject {
    |                 `- note: protocol 'OTPComponentProtocolErrorDelegate' does not conform to the 'Sendable' protocol
435 |
436 |     /**
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Layers/TransformLayer.swift:249:43: warning: capture of 'delegate' with non-sendable type '(any OTPComponentProtocolErrorDelegate)?' in a '@Sendable' closure
247 |
248 |                     // notify the consumer of the error
249 |                     delegateQueue.async { delegate?.layerError(error.logDescription) }
    |                                           `- warning: capture of 'delegate' with non-sendable type '(any OTPComponentProtocolErrorDelegate)?' in a '@Sendable' closure
250 |
251 |                     // just return any points already parsed
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Component.swift:434:17: note: protocol 'OTPComponentProtocolErrorDelegate' does not conform to the 'Sendable' protocol
432 | */
433 |
434 | public protocol OTPComponentProtocolErrorDelegate: AnyObject {
    |                 `- note: protocol 'OTPComponentProtocolErrorDelegate' does not conform to the 'Sendable' protocol
435 |
436 |     /**
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Layers/TransformLayer.swift:284:47: warning: capture of 'delegate' with non-sendable type '(any OTPComponentProtocolErrorDelegate)?' in a '@Sendable' closure
282 |
283 |                         // notify the consumer of the error
284 |                         delegateQueue.async { delegate?.layerError(error.logDescription) }
    |                                               `- warning: capture of 'delegate' with non-sendable type '(any OTPComponentProtocolErrorDelegate)?' in a '@Sendable' closure
285 |
286 |                         // just return any points already parsed
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Component.swift:434:17: note: protocol 'OTPComponentProtocolErrorDelegate' does not conform to the 'Sendable' protocol
432 | */
433 |
434 | public protocol OTPComponentProtocolErrorDelegate: AnyObject {
    |                 `- note: protocol 'OTPComponentProtocolErrorDelegate' does not conform to the 'Sendable' protocol
435 |
436 |     /**
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Layers/TransformLayer.swift:294:39: warning: capture of 'delegate' with non-sendable type '(any OTPComponentProtocolErrorDelegate)?' in a '@Sendable' closure
292 |
293 |                 // notify the consumer of the error
294 |                 delegateQueue.async { delegate?.layerError(error.logDescription) }
    |                                       `- warning: capture of 'delegate' with non-sendable type '(any OTPComponentProtocolErrorDelegate)?' in a '@Sendable' closure
295 |
296 |             }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Component.swift:434:17: note: protocol 'OTPComponentProtocolErrorDelegate' does not conform to the 'Sendable' protocol
432 | */
433 |
434 | public protocol OTPComponentProtocolErrorDelegate: AnyObject {
    |                 `- note: protocol 'OTPComponentProtocolErrorDelegate' does not conform to the 'Sendable' protocol
435 |
436 |     /**
[34/38] Compiling OTPKit SystemAdvertismentLayer.swift
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Layers/PointLayer.swift:233:43: warning: capture of 'delegate' with non-sendable type '(any OTPComponentProtocolErrorDelegate)?' in a '@Sendable' closure
231 |
232 |                     // notify the consumer of the error
233 |                     delegateQueue.async { delegate?.layerError(error.logDescription) }
    |                                           `- warning: capture of 'delegate' with non-sendable type '(any OTPComponentProtocolErrorDelegate)?' in a '@Sendable' closure
234 |
235 |                     // just return any modules already parsed
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Component.swift:434:17: note: protocol 'OTPComponentProtocolErrorDelegate' does not conform to the 'Sendable' protocol
432 | */
433 |
434 | public protocol OTPComponentProtocolErrorDelegate: AnyObject {
    |                 `- note: protocol 'OTPComponentProtocolErrorDelegate' does not conform to the 'Sendable' protocol
435 |
436 |     /**
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Layers/PointLayer.swift:258:47: warning: capture of 'delegate' with non-sendable type '(any OTPComponentProtocolErrorDelegate)?' in a '@Sendable' closure
256 |
257 |                         // notify the consumer of the error
258 |                         delegateQueue.async { delegate?.layerError(error.logDescription) }
    |                                               `- warning: capture of 'delegate' with non-sendable type '(any OTPComponentProtocolErrorDelegate)?' in a '@Sendable' closure
259 |
260 |                         // just return any modules already parsed
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Component.swift:434:17: note: protocol 'OTPComponentProtocolErrorDelegate' does not conform to the 'Sendable' protocol
432 | */
433 |
434 | public protocol OTPComponentProtocolErrorDelegate: AnyObject {
    |                 `- note: protocol 'OTPComponentProtocolErrorDelegate' does not conform to the 'Sendable' protocol
435 |
436 |     /**
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Layers/PointLayer.swift:273:44: warning: capture of 'delegate' with non-sendable type '(any OTPComponentProtocolErrorDelegate)?' in a '@Sendable' closure
271 |                     break
272 |                 default:
273 |                     delegateQueue.async {  delegate?.layerError(error.logDescription) }
    |                                            `- warning: capture of 'delegate' with non-sendable type '(any OTPComponentProtocolErrorDelegate)?' in a '@Sendable' closure
274 |                 }
275 |
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Component.swift:434:17: note: protocol 'OTPComponentProtocolErrorDelegate' does not conform to the 'Sendable' protocol
432 | */
433 |
434 | public protocol OTPComponentProtocolErrorDelegate: AnyObject {
    |                 `- note: protocol 'OTPComponentProtocolErrorDelegate' does not conform to the 'Sendable' protocol
435 |
436 |     /**
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Layers/SystemAdvertismentLayer.swift:203:43: warning: capture of 'delegate' with non-sendable type '(any OTPComponentProtocolErrorDelegate)?' in a '@Sendable' closure
201 |
202 |                     // notify the consumer of the error
203 |                     delegateQueue.async { delegate?.layerError(error.logDescription) }
    |                                           `- warning: capture of 'delegate' with non-sendable type '(any OTPComponentProtocolErrorDelegate)?' in a '@Sendable' closure
204 |
205 |                 }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Component.swift:434:17: note: protocol 'OTPComponentProtocolErrorDelegate' does not conform to the 'Sendable' protocol
432 | */
433 |
434 | public protocol OTPComponentProtocolErrorDelegate: AnyObject {
    |                 `- note: protocol 'OTPComponentProtocolErrorDelegate' does not conform to the 'Sendable' protocol
435 |
436 |     /**
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Layers/TransformLayer.swift:249:43: warning: capture of 'delegate' with non-sendable type '(any OTPComponentProtocolErrorDelegate)?' in a '@Sendable' closure
247 |
248 |                     // notify the consumer of the error
249 |                     delegateQueue.async { delegate?.layerError(error.logDescription) }
    |                                           `- warning: capture of 'delegate' with non-sendable type '(any OTPComponentProtocolErrorDelegate)?' in a '@Sendable' closure
250 |
251 |                     // just return any points already parsed
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Component.swift:434:17: note: protocol 'OTPComponentProtocolErrorDelegate' does not conform to the 'Sendable' protocol
432 | */
433 |
434 | public protocol OTPComponentProtocolErrorDelegate: AnyObject {
    |                 `- note: protocol 'OTPComponentProtocolErrorDelegate' does not conform to the 'Sendable' protocol
435 |
436 |     /**
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Layers/TransformLayer.swift:284:47: warning: capture of 'delegate' with non-sendable type '(any OTPComponentProtocolErrorDelegate)?' in a '@Sendable' closure
282 |
283 |                         // notify the consumer of the error
284 |                         delegateQueue.async { delegate?.layerError(error.logDescription) }
    |                                               `- warning: capture of 'delegate' with non-sendable type '(any OTPComponentProtocolErrorDelegate)?' in a '@Sendable' closure
285 |
286 |                         // just return any points already parsed
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Component.swift:434:17: note: protocol 'OTPComponentProtocolErrorDelegate' does not conform to the 'Sendable' protocol
432 | */
433 |
434 | public protocol OTPComponentProtocolErrorDelegate: AnyObject {
    |                 `- note: protocol 'OTPComponentProtocolErrorDelegate' does not conform to the 'Sendable' protocol
435 |
436 |     /**
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Layers/TransformLayer.swift:294:39: warning: capture of 'delegate' with non-sendable type '(any OTPComponentProtocolErrorDelegate)?' in a '@Sendable' closure
292 |
293 |                 // notify the consumer of the error
294 |                 delegateQueue.async { delegate?.layerError(error.logDescription) }
    |                                       `- warning: capture of 'delegate' with non-sendable type '(any OTPComponentProtocolErrorDelegate)?' in a '@Sendable' closure
295 |
296 |             }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Component.swift:434:17: note: protocol 'OTPComponentProtocolErrorDelegate' does not conform to the 'Sendable' protocol
432 | */
433 |
434 | public protocol OTPComponentProtocolErrorDelegate: AnyObject {
    |                 `- note: protocol 'OTPComponentProtocolErrorDelegate' does not conform to the 'Sendable' protocol
435 |
436 |     /**
[35/38] Compiling OTPKit TransformLayer.swift
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Layers/PointLayer.swift:233:43: warning: capture of 'delegate' with non-sendable type '(any OTPComponentProtocolErrorDelegate)?' in a '@Sendable' closure
231 |
232 |                     // notify the consumer of the error
233 |                     delegateQueue.async { delegate?.layerError(error.logDescription) }
    |                                           `- warning: capture of 'delegate' with non-sendable type '(any OTPComponentProtocolErrorDelegate)?' in a '@Sendable' closure
234 |
235 |                     // just return any modules already parsed
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Component.swift:434:17: note: protocol 'OTPComponentProtocolErrorDelegate' does not conform to the 'Sendable' protocol
432 | */
433 |
434 | public protocol OTPComponentProtocolErrorDelegate: AnyObject {
    |                 `- note: protocol 'OTPComponentProtocolErrorDelegate' does not conform to the 'Sendable' protocol
435 |
436 |     /**
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Layers/PointLayer.swift:258:47: warning: capture of 'delegate' with non-sendable type '(any OTPComponentProtocolErrorDelegate)?' in a '@Sendable' closure
256 |
257 |                         // notify the consumer of the error
258 |                         delegateQueue.async { delegate?.layerError(error.logDescription) }
    |                                               `- warning: capture of 'delegate' with non-sendable type '(any OTPComponentProtocolErrorDelegate)?' in a '@Sendable' closure
259 |
260 |                         // just return any modules already parsed
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Component.swift:434:17: note: protocol 'OTPComponentProtocolErrorDelegate' does not conform to the 'Sendable' protocol
432 | */
433 |
434 | public protocol OTPComponentProtocolErrorDelegate: AnyObject {
    |                 `- note: protocol 'OTPComponentProtocolErrorDelegate' does not conform to the 'Sendable' protocol
435 |
436 |     /**
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Layers/PointLayer.swift:273:44: warning: capture of 'delegate' with non-sendable type '(any OTPComponentProtocolErrorDelegate)?' in a '@Sendable' closure
271 |                     break
272 |                 default:
273 |                     delegateQueue.async {  delegate?.layerError(error.logDescription) }
    |                                            `- warning: capture of 'delegate' with non-sendable type '(any OTPComponentProtocolErrorDelegate)?' in a '@Sendable' closure
274 |                 }
275 |
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Component.swift:434:17: note: protocol 'OTPComponentProtocolErrorDelegate' does not conform to the 'Sendable' protocol
432 | */
433 |
434 | public protocol OTPComponentProtocolErrorDelegate: AnyObject {
    |                 `- note: protocol 'OTPComponentProtocolErrorDelegate' does not conform to the 'Sendable' protocol
435 |
436 |     /**
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Layers/SystemAdvertismentLayer.swift:203:43: warning: capture of 'delegate' with non-sendable type '(any OTPComponentProtocolErrorDelegate)?' in a '@Sendable' closure
201 |
202 |                     // notify the consumer of the error
203 |                     delegateQueue.async { delegate?.layerError(error.logDescription) }
    |                                           `- warning: capture of 'delegate' with non-sendable type '(any OTPComponentProtocolErrorDelegate)?' in a '@Sendable' closure
204 |
205 |                 }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Component.swift:434:17: note: protocol 'OTPComponentProtocolErrorDelegate' does not conform to the 'Sendable' protocol
432 | */
433 |
434 | public protocol OTPComponentProtocolErrorDelegate: AnyObject {
    |                 `- note: protocol 'OTPComponentProtocolErrorDelegate' does not conform to the 'Sendable' protocol
435 |
436 |     /**
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Layers/TransformLayer.swift:249:43: warning: capture of 'delegate' with non-sendable type '(any OTPComponentProtocolErrorDelegate)?' in a '@Sendable' closure
247 |
248 |                     // notify the consumer of the error
249 |                     delegateQueue.async { delegate?.layerError(error.logDescription) }
    |                                           `- warning: capture of 'delegate' with non-sendable type '(any OTPComponentProtocolErrorDelegate)?' in a '@Sendable' closure
250 |
251 |                     // just return any points already parsed
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Component.swift:434:17: note: protocol 'OTPComponentProtocolErrorDelegate' does not conform to the 'Sendable' protocol
432 | */
433 |
434 | public protocol OTPComponentProtocolErrorDelegate: AnyObject {
    |                 `- note: protocol 'OTPComponentProtocolErrorDelegate' does not conform to the 'Sendable' protocol
435 |
436 |     /**
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Layers/TransformLayer.swift:284:47: warning: capture of 'delegate' with non-sendable type '(any OTPComponentProtocolErrorDelegate)?' in a '@Sendable' closure
282 |
283 |                         // notify the consumer of the error
284 |                         delegateQueue.async { delegate?.layerError(error.logDescription) }
    |                                               `- warning: capture of 'delegate' with non-sendable type '(any OTPComponentProtocolErrorDelegate)?' in a '@Sendable' closure
285 |
286 |                         // just return any points already parsed
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Component.swift:434:17: note: protocol 'OTPComponentProtocolErrorDelegate' does not conform to the 'Sendable' protocol
432 | */
433 |
434 | public protocol OTPComponentProtocolErrorDelegate: AnyObject {
    |                 `- note: protocol 'OTPComponentProtocolErrorDelegate' does not conform to the 'Sendable' protocol
435 |
436 |     /**
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Layers/TransformLayer.swift:294:39: warning: capture of 'delegate' with non-sendable type '(any OTPComponentProtocolErrorDelegate)?' in a '@Sendable' closure
292 |
293 |                 // notify the consumer of the error
294 |                 delegateQueue.async { delegate?.layerError(error.logDescription) }
    |                                       `- warning: capture of 'delegate' with non-sendable type '(any OTPComponentProtocolErrorDelegate)?' in a '@Sendable' closure
295 |
296 |             }
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Components/Component.swift:434:17: note: protocol 'OTPComponentProtocolErrorDelegate' does not conform to the 'Sendable' protocol
432 | */
433 |
434 | public protocol OTPComponentProtocolErrorDelegate: AnyObject {
    |                 `- note: protocol 'OTPComponentProtocolErrorDelegate' does not conform to the 'Sendable' protocol
435 |
436 |     /**
[36/38] Compiling OTPKit ModuleIdentifier.swift
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Types/Modules/ModulePosition.swift:48:23: warning: static property 'identifier' is not concurrency-safe because non-'Sendable' type 'OTPModuleIdentifier' may have shared mutable state; this is an error in the Swift 6 language mode
 46 |
 47 |     /// Uniquely identifies the module using an `OTPModuleIdentifier`.
 48 |     public static let identifier: OTPModuleIdentifier = OTPModuleIdentifier(manufacturerID: ModuleLayer.ManufacturerID.esta.rawValue, moduleNumber: ModuleLayer.StandardModuleNumber.position.rawValue)
    |                       |- warning: static property 'identifier' is not concurrency-safe because non-'Sendable' type 'OTPModuleIdentifier' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'identifier' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 49 |
 50 |     /// The size of the module's data in bytes.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Types/ModuleIdentifier.swift:34:15: note: consider making struct 'OTPModuleIdentifier' conform to the 'Sendable' protocol
 32 | */
 33 |
 34 | public struct OTPModuleIdentifier: Comparable, Hashable {
    |               `- note: consider making struct 'OTPModuleIdentifier' conform to the 'Sendable' protocol
 35 |
 36 |     /**
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Types/Modules/ModulePositionVelAccel.swift:48:23: warning: static property 'identifier' is not concurrency-safe because non-'Sendable' type 'OTPModuleIdentifier' may have shared mutable state; this is an error in the Swift 6 language mode
 46 |
 47 |     /// Uniquely identifies the module using an `OTPModuleIdentifier`.
 48 |     public static let identifier: OTPModuleIdentifier = OTPModuleIdentifier(manufacturerID: ModuleLayer.ManufacturerID.esta.rawValue, moduleNumber: ModuleLayer.StandardModuleNumber.positionVelocityAccel.rawValue)
    |                       |- warning: static property 'identifier' is not concurrency-safe because non-'Sendable' type 'OTPModuleIdentifier' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'identifier' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 49 |
 50 |     /// The size of the module's data in bytes.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Types/ModuleIdentifier.swift:34:15: note: consider making struct 'OTPModuleIdentifier' conform to the 'Sendable' protocol
 32 | */
 33 |
 34 | public struct OTPModuleIdentifier: Comparable, Hashable {
    |               `- note: consider making struct 'OTPModuleIdentifier' conform to the 'Sendable' protocol
 35 |
 36 |     /**
[37/38] Compiling OTPKit ModulePosition.swift
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Types/Modules/ModulePosition.swift:48:23: warning: static property 'identifier' is not concurrency-safe because non-'Sendable' type 'OTPModuleIdentifier' may have shared mutable state; this is an error in the Swift 6 language mode
 46 |
 47 |     /// Uniquely identifies the module using an `OTPModuleIdentifier`.
 48 |     public static let identifier: OTPModuleIdentifier = OTPModuleIdentifier(manufacturerID: ModuleLayer.ManufacturerID.esta.rawValue, moduleNumber: ModuleLayer.StandardModuleNumber.position.rawValue)
    |                       |- warning: static property 'identifier' is not concurrency-safe because non-'Sendable' type 'OTPModuleIdentifier' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'identifier' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 49 |
 50 |     /// The size of the module's data in bytes.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Types/ModuleIdentifier.swift:34:15: note: consider making struct 'OTPModuleIdentifier' conform to the 'Sendable' protocol
 32 | */
 33 |
 34 | public struct OTPModuleIdentifier: Comparable, Hashable {
    |               `- note: consider making struct 'OTPModuleIdentifier' conform to the 'Sendable' protocol
 35 |
 36 |     /**
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Types/Modules/ModulePositionVelAccel.swift:48:23: warning: static property 'identifier' is not concurrency-safe because non-'Sendable' type 'OTPModuleIdentifier' may have shared mutable state; this is an error in the Swift 6 language mode
 46 |
 47 |     /// Uniquely identifies the module using an `OTPModuleIdentifier`.
 48 |     public static let identifier: OTPModuleIdentifier = OTPModuleIdentifier(manufacturerID: ModuleLayer.ManufacturerID.esta.rawValue, moduleNumber: ModuleLayer.StandardModuleNumber.positionVelocityAccel.rawValue)
    |                       |- warning: static property 'identifier' is not concurrency-safe because non-'Sendable' type 'OTPModuleIdentifier' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'identifier' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 49 |
 50 |     /// The size of the module's data in bytes.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Types/ModuleIdentifier.swift:34:15: note: consider making struct 'OTPModuleIdentifier' conform to the 'Sendable' protocol
 32 | */
 33 |
 34 | public struct OTPModuleIdentifier: Comparable, Hashable {
    |               `- note: consider making struct 'OTPModuleIdentifier' conform to the 'Sendable' protocol
 35 |
 36 |     /**
[38/38] Compiling OTPKit ModulePositionVelAccel.swift
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Types/Modules/ModulePosition.swift:48:23: warning: static property 'identifier' is not concurrency-safe because non-'Sendable' type 'OTPModuleIdentifier' may have shared mutable state; this is an error in the Swift 6 language mode
 46 |
 47 |     /// Uniquely identifies the module using an `OTPModuleIdentifier`.
 48 |     public static let identifier: OTPModuleIdentifier = OTPModuleIdentifier(manufacturerID: ModuleLayer.ManufacturerID.esta.rawValue, moduleNumber: ModuleLayer.StandardModuleNumber.position.rawValue)
    |                       |- warning: static property 'identifier' is not concurrency-safe because non-'Sendable' type 'OTPModuleIdentifier' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'identifier' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 49 |
 50 |     /// The size of the module's data in bytes.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Types/ModuleIdentifier.swift:34:15: note: consider making struct 'OTPModuleIdentifier' conform to the 'Sendable' protocol
 32 | */
 33 |
 34 | public struct OTPModuleIdentifier: Comparable, Hashable {
    |               `- note: consider making struct 'OTPModuleIdentifier' conform to the 'Sendable' protocol
 35 |
 36 |     /**
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Types/Modules/ModulePositionVelAccel.swift:48:23: warning: static property 'identifier' is not concurrency-safe because non-'Sendable' type 'OTPModuleIdentifier' may have shared mutable state; this is an error in the Swift 6 language mode
 46 |
 47 |     /// Uniquely identifies the module using an `OTPModuleIdentifier`.
 48 |     public static let identifier: OTPModuleIdentifier = OTPModuleIdentifier(manufacturerID: ModuleLayer.ManufacturerID.esta.rawValue, moduleNumber: ModuleLayer.StandardModuleNumber.positionVelocityAccel.rawValue)
    |                       |- warning: static property 'identifier' is not concurrency-safe because non-'Sendable' type 'OTPModuleIdentifier' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'identifier' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 49 |
 50 |     /// The size of the module's data in bytes.
/Users/admin/builder/spi-builder-workspace/Sources/OTPKit/Types/ModuleIdentifier.swift:34:15: note: consider making struct 'OTPModuleIdentifier' conform to the 'Sendable' protocol
 32 | */
 33 |
 34 | public struct OTPModuleIdentifier: Comparable, Hashable {
    |               `- note: consider making struct 'OTPModuleIdentifier' conform to the 'Sendable' protocol
 35 |
 36 |     /**
Build complete! (6.91s)
Build complete.
{
  "dependencies" : [
    {
      "identity" : "cocoaasyncsocket",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "7.6.5",
            "upper_bound" : "8.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/robbiehanson/CocoaAsyncSocket"
    }
  ],
  "manifest_display_name" : "OTPKit",
  "name" : "OTPKit",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "ios",
      "version" : "12.0"
    },
    {
      "name" : "macos",
      "version" : "10.14"
    }
  ],
  "products" : [
    {
      "name" : "OTPKit",
      "targets" : [
        "OTPKit"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "OTPKitTests",
      "module_type" : "SwiftTarget",
      "name" : "OTPKitTests",
      "path" : "Tests/OTPKitTests",
      "sources" : [
        "AddressPointDescriptionTests.swift",
        "AddressTests.swift",
        "AdvertisementLayerTests.swift",
        "ConsumerTests.swift",
        "Data+ExtensionTests.swift",
        "ModuleAdvertisementLayerTests.swift",
        "ModuleIdentifierTests.swift",
        "ModuleLayerTests.swift",
        "ModuleTests.swift",
        "NameAdvertisementLayerTests.swift",
        "OTPLayerTests.swift",
        "PointLayerTests.swift",
        "PointTests.swift",
        "ProducerTests.swift",
        "SystemAdvertisementLayerTests.swift",
        "TransformLayerTests.swift",
        "XCTestManifests.swift"
      ],
      "target_dependencies" : [
        "OTPKit"
      ],
      "type" : "test"
    },
    {
      "c99name" : "OTPKit",
      "module_type" : "SwiftTarget",
      "name" : "OTPKit",
      "path" : "Sources/OTPKit",
      "product_dependencies" : [
        "CocoaAsyncSocket"
      ],
      "product_memberships" : [
        "OTPKit"
      ],
      "sources" : [
        "Components/Component.swift",
        "Components/ComponentSocket.swift",
        "Components/ComponentStatus.swift",
        "Components/Consumer.swift",
        "Components/ConsumerProducer.swift",
        "Components/Producer.swift",
        "Components/ProducerConsumer.swift",
        "Layers/AdvertismentLayer.swift",
        "Layers/ModuleAdvertisementLayer.swift",
        "Layers/ModuleLayer.swift",
        "Layers/NameAdvertisementLayer.swift",
        "Layers/OTPLayer.swift",
        "Layers/PointLayer.swift",
        "Layers/SystemAdvertismentLayer.swift",
        "Layers/TransformLayer.swift",
        "Network/NetworkDefinitions.swift",
        "Types/Address.swift",
        "Types/AddressPointDescription.swift",
        "Types/Data+Extension.swift",
        "Types/Date+Extension.swift",
        "Types/Folio.swift",
        "Types/GeneralDefinitions.swift",
        "Types/Math.swift",
        "Types/Module.swift",
        "Types/ModuleIdentifier.swift",
        "Types/Modules/ModulePosition.swift",
        "Types/Modules/ModulePositionVelAccel.swift",
        "Types/Modules/ModuleReferenceFrame.swift",
        "Types/Modules/ModuleRotation.swift",
        "Types/Modules/ModuleRotationVelAccel.swift",
        "Types/Modules/ModuleScale.swift",
        "Types/Point.swift",
        "Vendor/CwlDispatch.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.2"
}
Done.