0001 // 0002 // Zip.swift 0003 // RxSwift 0004 // 0005 // Created by Krunoslav Zaher on 5/23/15. 0006 // Copyright © 2015 Krunoslav Zaher. All rights reserved. 0007 // 0008 0009 import Foundation 0010 0011 protocol ZipSinkProtocol: class 0012 { 0013 func next
Zip.swift:18 class ZipSink<O: ObserverType> : Sink<O>, ZipSinkProtocol {Zip.swift:112 private var _parent: ZipSinkProtocol?Zip.swift:121 init(lock: NSRecursiveLock, parent: ZipSinkProtocol, index: Int, setNextValue: ValueSetter, this: Disposable) {(index: Int) 0014 func fail
Zip.swift:149 parent.next(_index)(error: ErrorType) 0015 func done
Zip.swift:151 parent.fail(error)(index: Int) 0016 } 0017 0018 class ZipSink
Zip.swift:153 parent.done(_index)<O
Zip+arity.swift:36 class ZipSink2_<E1, E2, O: ObserverType> : ZipSink<O> {Zip+arity.swift:129 class ZipSink3_<E1, E2, E3, O: ObserverType> : ZipSink<O> {Zip+arity.swift:230 class ZipSink4_<E1, E2, E3, E4, O: ObserverType> : ZipSink<O> {Zip+arity.swift:339 class ZipSink5_<E1, E2, E3, E4, E5, O: ObserverType> : ZipSink<O> {Zip+arity.swift:456 class ZipSink6_<E1, E2, E3, E4, E5, E6, O: ObserverType> : ZipSink<O> {Zip+arity.swift:581 class ZipSink7_<E1, E2, E3, E4, E5, E6, E7, O: ObserverType> : ZipSink<O> {Zip+arity.swift:714 class ZipSink8_<E1, E2, E3, E4, E5, E6, E7, E8, O: ObserverType> : ZipSink<O> {: ObserverType> : Sink<O>, ZipSinkProtocol { 0019 typealias Element
Zip.swift:18 class ZipSink<O: ObserverType> : Sink<O>, ZipSinkProtocol {Zip.swift:19 typealias Element = O.EZip.swift:28 init(arity: Int, observer: O) {= O.E 0020 0021 let _arity
Zip.swift:35 func getResult() throws -> Element {: Int 0022 0023 let _lock
Zip.swift:30 _arity = arityZip.swift:46 for i in 0 ..< _arity {= NSRecursiveLock() 0024 0025 // state 0026 private var _isDone
Zip+arity.swift:66 let observer1 = ZipObserver(lock: _lock, parent: self, index: 0, setNextValue: { self._values1.enqueue($0) }, this: subscription1)Zip+arity.swift:67 let observer2 = ZipObserver(lock: _lock, parent: self, index: 1, setNextValue: { self._values2.enqueue($0) }, this: subscription2)Zip+arity.swift:162 let observer1 = ZipObserver(lock: _lock, parent: self, index: 0, setNextValue: { self._values1.enqueue($0) }, this: subscription1)Zip+arity.swift:163 let observer2 = ZipObserver(lock: _lock, parent: self, index: 1, setNextValue: { self._values2.enqueue($0) }, this: subscription2)Zip+arity.swift:164 let observer3 = ZipObserver(lock: _lock, parent: self, index: 2, setNextValue: { self._values3.enqueue($0) }, this: subscription3)Zip+arity.swift:266 let observer1 = ZipObserver(lock: _lock, parent: self, index: 0, setNextValue: { self._values1.enqueue($0) }, this: subscription1)Zip+arity.swift:267 let observer2 = ZipObserver(lock: _lock, parent: self, index: 1, setNextValue: { self._values2.enqueue($0) }, this: subscription2)Zip+arity.swift:268 let observer3 = ZipObserver(lock: _lock, parent: self, index: 2, setNextValue: { self._values3.enqueue($0) }, this: subscription3)Zip+arity.swift:269 let observer4 = ZipObserver(lock: _lock, parent: self, index: 3, setNextValue: { self._values4.enqueue($0) }, this: subscription4)Zip+arity.swift:378 let observer1 = ZipObserver(lock: _lock, parent: self, index: 0, setNextValue: { self._values1.enqueue($0) }, this: subscription1)Zip+arity.swift:379 let observer2 = ZipObserver(lock: _lock, parent: self, index: 1, setNextValue: { self._values2.enqueue($0) }, this: subscription2)Zip+arity.swift:380 let observer3 = ZipObserver(lock: _lock, parent: self, index: 2, setNextValue: { self._values3.enqueue($0) }, this: subscription3)Zip+arity.swift:381 let observer4 = ZipObserver(lock: _lock, parent: self, index: 3, setNextValue: { self._values4.enqueue($0) }, this: subscription4)Zip+arity.swift:382 let observer5 = ZipObserver(lock: _lock, parent: self, index: 4, setNextValue: { self._values5.enqueue($0) }, this: subscription5)Zip+arity.swift:498 let observer1 = ZipObserver(lock: _lock, parent: self, index: 0, setNextValue: { self._values1.enqueue($0) }, this: subscription1)Zip+arity.swift:499 let observer2 = ZipObserver(lock: _lock, parent: self, index: 1, setNextValue: { self._values2.enqueue($0) }, this: subscription2)Zip+arity.swift:500 let observer3 = ZipObserver(lock: _lock, parent: self, index: 2, setNextValue: { self._values3.enqueue($0) }, this: subscription3)Zip+arity.swift:501 let observer4 = ZipObserver(lock: _lock, parent: self, index: 3, setNextValue: { self._values4.enqueue($0) }, this: subscription4)Zip+arity.swift:502 let observer5 = ZipObserver(lock: _lock, parent: self, index: 4, setNextValue: { self._values5.enqueue($0) }, this: subscription5)Zip+arity.swift:503 let observer6 = ZipObserver(lock: _lock, parent: self, index: 5, setNextValue: { self._values6.enqueue($0) }, this: subscription6)Zip+arity.swift:626 let observer1 = ZipObserver(lock: _lock, parent: self, index: 0, setNextValue: { self._values1.enqueue($0) }, this: subscription1)Zip+arity.swift:627 let observer2 = ZipObserver(lock: _lock, parent: self, index: 1, setNextValue: { self._values2.enqueue($0) }, this: subscription2)Zip+arity.swift:628 let observer3 = ZipObserver(lock: _lock, parent: self, index: 2, setNextValue: { self._values3.enqueue($0) }, this: subscription3)Zip+arity.swift:629 let observer4 = ZipObserver(lock: _lock, parent: self, index: 3, setNextValue: { self._values4.enqueue($0) }, this: subscription4)Zip+arity.swift:630 let observer5 = ZipObserver(lock: _lock, parent: self, index: 4, setNextValue: { self._values5.enqueue($0) }, this: subscription5)Zip+arity.swift:631 let observer6 = ZipObserver(lock: _lock, parent: self, index: 5, setNextValue: { self._values6.enqueue($0) }, this: subscription6)Zip+arity.swift:632 let observer7 = ZipObserver(lock: _lock, parent: self, index: 6, setNextValue: { self._values7.enqueue($0) }, this: subscription7)Zip+arity.swift:762 let observer1 = ZipObserver(lock: _lock, parent: self, index: 0, setNextValue: { self._values1.enqueue($0) }, this: subscription1)Zip+arity.swift:763 let observer2 = ZipObserver(lock: _lock, parent: self, index: 1, setNextValue: { self._values2.enqueue($0) }, this: subscription2)Zip+arity.swift:764 let observer3 = ZipObserver(lock: _lock, parent: self, index: 2, setNextValue: { self._values3.enqueue($0) }, this: subscription3)Zip+arity.swift:765 let observer4 = ZipObserver(lock: _lock, parent: self, index: 3, setNextValue: { self._values4.enqueue($0) }, this: subscription4)Zip+arity.swift:766 let observer5 = ZipObserver(lock: _lock, parent: self, index: 4, setNextValue: { self._values5.enqueue($0) }, this: subscription5)Zip+arity.swift:767 let observer6 = ZipObserver(lock: _lock, parent: self, index: 5, setNextValue: { self._values6.enqueue($0) }, this: subscription6)Zip+arity.swift:768 let observer7 = ZipObserver(lock: _lock, parent: self, index: 6, setNextValue: { self._values7.enqueue($0) }, this: subscription7)Zip+arity.swift:769 let observer8 = ZipObserver(lock: _lock, parent: self, index: 7, setNextValue: { self._values8.enqueue($0) }, this: subscription8): [Bool] 0027 0028 init
Zip.swift:29 _isDone = [Bool](count: arity, repeatedValue: false)Zip.swift:66 let arity = _isDone.countZip.swift:68 if i != index && !_isDone[i] {Zip.swift:87 _isDone[index] = trueZip.swift:91 for done in _isDone {(arity: Int, observer: O) { 0029 _isDone = [Bool](count: arity, repeatedValue: false) 0030 _arity = arity 0031 0032 super.init(observer: observer) 0033 } 0034 0035 func getResult
Zip+arity.swift:47 super.init(arity: 2, observer: observer)Zip+arity.swift:141 super.init(arity: 3, observer: observer)Zip+arity.swift:243 super.init(arity: 4, observer: observer)Zip+arity.swift:353 super.init(arity: 5, observer: observer)Zip+arity.swift:471 super.init(arity: 6, observer: observer)Zip+arity.swift:597 super.init(arity: 7, observer: observer)Zip+arity.swift:731 super.init(arity: 8, observer: observer)() throws -> Element { 0036 abstractMethod() 0037 } 0038 0039 func hasElements
Zip.swift:55 let result = try getResult()(index: Int) -> Bool { 0040 abstractMethod() 0041 } 0042 0043 func next(index: Int) { 0044 var hasValueAll = true 0045 0046 for i in 0 ..< _arity { 0047 if !hasElements(i) { 0048 hasValueAll = false 0049 break 0050 } 0051 } 0052 0053 if hasValueAll { 0054 do { 0055 let result = try getResult() 0056 self.forwardOn(.Next(result)) 0057 } 0058 catch let e { 0059 self.forwardOn(.Error(e)) 0060 dispose() 0061 } 0062 } 0063 else { 0064 var allOthersDone = true 0065 0066 let arity = _isDone.count 0067 for i in 0 ..< arity { 0068 if i != index && !_isDone[i] { 0069 allOthersDone = false 0070 break 0071 } 0072 } 0073 0074 if allOthersDone { 0075 forwardOn(.Completed) 0076 self.dispose() 0077 } 0078 } 0079 } 0080 0081 func fail(error: ErrorType) { 0082 forwardOn(.Error(error)) 0083 dispose() 0084 } 0085 0086 func done(index: Int) { 0087 _isDone[index] = true 0088 0089 var allDone = true 0090 0091 for done in _isDone { 0092 if !done { 0093 allDone = false 0094 break 0095 } 0096 } 0097 0098 if allDone { 0099 forwardOn(.Completed) 0100 dispose() 0101 } 0102 } 0103 } 0104 0105 class ZipObserver
Zip.swift:47 if !hasElements(i) {<ElementType
Zip+arity.swift:66 let observer1 = ZipObserver(lock: _lock, parent: self, index: 0, setNextValue: { self._values1.enqueue($0) }, this: subscription1)Zip+arity.swift:67 let observer2 = ZipObserver(lock: _lock, parent: self, index: 1, setNextValue: { self._values2.enqueue($0) }, this: subscription2)Zip+arity.swift:162 let observer1 = ZipObserver(lock: _lock, parent: self, index: 0, setNextValue: { self._values1.enqueue($0) }, this: subscription1)Zip+arity.swift:163 let observer2 = ZipObserver(lock: _lock, parent: self, index: 1, setNextValue: { self._values2.enqueue($0) }, this: subscription2)Zip+arity.swift:164 let observer3 = ZipObserver(lock: _lock, parent: self, index: 2, setNextValue: { self._values3.enqueue($0) }, this: subscription3)Zip+arity.swift:266 let observer1 = ZipObserver(lock: _lock, parent: self, index: 0, setNextValue: { self._values1.enqueue($0) }, this: subscription1)Zip+arity.swift:267 let observer2 = ZipObserver(lock: _lock, parent: self, index: 1, setNextValue: { self._values2.enqueue($0) }, this: subscription2)Zip+arity.swift:268 let observer3 = ZipObserver(lock: _lock, parent: self, index: 2, setNextValue: { self._values3.enqueue($0) }, this: subscription3)Zip+arity.swift:269 let observer4 = ZipObserver(lock: _lock, parent: self, index: 3, setNextValue: { self._values4.enqueue($0) }, this: subscription4)Zip+arity.swift:378 let observer1 = ZipObserver(lock: _lock, parent: self, index: 0, setNextValue: { self._values1.enqueue($0) }, this: subscription1)Zip+arity.swift:379 let observer2 = ZipObserver(lock: _lock, parent: self, index: 1, setNextValue: { self._values2.enqueue($0) }, this: subscription2)Zip+arity.swift:380 let observer3 = ZipObserver(lock: _lock, parent: self, index: 2, setNextValue: { self._values3.enqueue($0) }, this: subscription3)Zip+arity.swift:381 let observer4 = ZipObserver(lock: _lock, parent: self, index: 3, setNextValue: { self._values4.enqueue($0) }, this: subscription4)Zip+arity.swift:382 let observer5 = ZipObserver(lock: _lock, parent: self, index: 4, setNextValue: { self._values5.enqueue($0) }, this: subscription5)Zip+arity.swift:498 let observer1 = ZipObserver(lock: _lock, parent: self, index: 0, setNextValue: { self._values1.enqueue($0) }, this: subscription1)Zip+arity.swift:499 let observer2 = ZipObserver(lock: _lock, parent: self, index: 1, setNextValue: { self._values2.enqueue($0) }, this: subscription2)Zip+arity.swift:500 let observer3 = ZipObserver(lock: _lock, parent: self, index: 2, setNextValue: { self._values3.enqueue($0) }, this: subscription3)Zip+arity.swift:501 let observer4 = ZipObserver(lock: _lock, parent: self, index: 3, setNextValue: { self._values4.enqueue($0) }, this: subscription4)Zip+arity.swift:502 let observer5 = ZipObserver(lock: _lock, parent: self, index: 4, setNextValue: { self._values5.enqueue($0) }, this: subscription5)Zip+arity.swift:503 let observer6 = ZipObserver(lock: _lock, parent: self, index: 5, setNextValue: { self._values6.enqueue($0) }, this: subscription6)Zip+arity.swift:626 let observer1 = ZipObserver(lock: _lock, parent: self, index: 0, setNextValue: { self._values1.enqueue($0) }, this: subscription1)Zip+arity.swift:627 let observer2 = ZipObserver(lock: _lock, parent: self, index: 1, setNextValue: { self._values2.enqueue($0) }, this: subscription2)Zip+arity.swift:628 let observer3 = ZipObserver(lock: _lock, parent: self, index: 2, setNextValue: { self._values3.enqueue($0) }, this: subscription3)Zip+arity.swift:629 let observer4 = ZipObserver(lock: _lock, parent: self, index: 3, setNextValue: { self._values4.enqueue($0) }, this: subscription4)Zip+arity.swift:630 let observer5 = ZipObserver(lock: _lock, parent: self, index: 4, setNextValue: { self._values5.enqueue($0) }, this: subscription5)Zip+arity.swift:631 let observer6 = ZipObserver(lock: _lock, parent: self, index: 5, setNextValue: { self._values6.enqueue($0) }, this: subscription6)Zip+arity.swift:632 let observer7 = ZipObserver(lock: _lock, parent: self, index: 6, setNextValue: { self._values7.enqueue($0) }, this: subscription7)Zip+arity.swift:762 let observer1 = ZipObserver(lock: _lock, parent: self, index: 0, setNextValue: { self._values1.enqueue($0) }, this: subscription1)Zip+arity.swift:763 let observer2 = ZipObserver(lock: _lock, parent: self, index: 1, setNextValue: { self._values2.enqueue($0) }, this: subscription2)Zip+arity.swift:764 let observer3 = ZipObserver(lock: _lock, parent: self, index: 2, setNextValue: { self._values3.enqueue($0) }, this: subscription3)Zip+arity.swift:765 let observer4 = ZipObserver(lock: _lock, parent: self, index: 3, setNextValue: { self._values4.enqueue($0) }, this: subscription4)Zip+arity.swift:766 let observer5 = ZipObserver(lock: _lock, parent: self, index: 4, setNextValue: { self._values5.enqueue($0) }, this: subscription5)Zip+arity.swift:767 let observer6 = ZipObserver(lock: _lock, parent: self, index: 5, setNextValue: { self._values6.enqueue($0) }, this: subscription6)Zip+arity.swift:768 let observer7 = ZipObserver(lock: _lock, parent: self, index: 6, setNextValue: { self._values7.enqueue($0) }, this: subscription7)Zip+arity.swift:769 let observer8 = ZipObserver(lock: _lock, parent: self, index: 7, setNextValue: { self._values8.enqueue($0) }, this: subscription8)> 0106 : ObserverType 0107 , LockOwnerType 0108 , SynchronizedOnType { 0109 typealias E
Zip.swift:109 typealias E = ElementTypeZip.swift:110 typealias ValueSetter = (ElementType) -> ()= ElementType 0110 typealias ValueSetter
Zip.swift:129 func on(event: Event<E>) {Zip.swift:133 func _synchronized_on(event: Event<E>) {= (ElementType) -> () 0111 0112 private var _parent
Zip.swift:119 private let _setNextValue: ValueSetterZip.swift:121 init(lock: NSRecursiveLock, parent: ZipSinkProtocol, index: Int, setNextValue: ValueSetter, this: Disposable) {: ZipSinkProtocol? 0113 0114 let _lock
Zip.swift:123 _parent = parentZip.swift:134 if let _ = _parent {Zip.swift:145 if let parent = _parent {: NSRecursiveLock 0115 0116 // state 0117 private let _index
Zip.swift:122 _lock = lock: Int 0118 private let _this
Zip.swift:124 _index = indexZip.swift:149 parent.next(_index)Zip.swift:153 parent.done(_index): Disposable 0119 private let _setNextValue
Zip.swift:125 _this = thisZip.swift:139 _this.dispose()Zip.swift:141 _this.dispose(): ValueSetter 0120 0121 init
Zip.swift:126 _setNextValue = setNextValueZip.swift:148 _setNextValue(value)(lock: NSRecursiveLock, parent: ZipSinkProtocol, index: Int, setNextValue: ValueSetter, this: Disposable) { 0122 _lock = lock 0123 _parent = parent 0124 _index = index 0125 _this = this 0126 _setNextValue = setNextValue 0127 } 0128 0129 func on(event: Event<E>) { 0130 synchronizedOn(event) 0131 } 0132 0133 func _synchronized_on(event: Event<E>) { 0134 if let _ = _parent { 0135 switch event { 0136 case .Next(_): 0137 break 0138 case .Error(_): 0139 _this.dispose() 0140 case .Completed: 0141 _this.dispose() 0142 } 0143 } 0144 0145 if let parent = _parent { 0146 switch event { 0147 case .Next(let value): 0148 _setNextValue(value) 0149 parent.next(_index) 0150 case .Error(let error): 0151 parent.fail(error) 0152 case .Completed: 0153 parent.done(_index) 0154 } 0155 } 0156 } 0157 } 0158
Zip+arity.swift:66 let observer1 = ZipObserver(lock: _lock, parent: self, index: 0, setNextValue: { self._values1.enqueue($0) }, this: subscription1)Zip+arity.swift:67 let observer2 = ZipObserver(lock: _lock, parent: self, index: 1, setNextValue: { self._values2.enqueue($0) }, this: subscription2)Zip+arity.swift:162 let observer1 = ZipObserver(lock: _lock, parent: self, index: 0, setNextValue: { self._values1.enqueue($0) }, this: subscription1)Zip+arity.swift:163 let observer2 = ZipObserver(lock: _lock, parent: self, index: 1, setNextValue: { self._values2.enqueue($0) }, this: subscription2)Zip+arity.swift:164 let observer3 = ZipObserver(lock: _lock, parent: self, index: 2, setNextValue: { self._values3.enqueue($0) }, this: subscription3)Zip+arity.swift:266 let observer1 = ZipObserver(lock: _lock, parent: self, index: 0, setNextValue: { self._values1.enqueue($0) }, this: subscription1)Zip+arity.swift:267 let observer2 = ZipObserver(lock: _lock, parent: self, index: 1, setNextValue: { self._values2.enqueue($0) }, this: subscription2)Zip+arity.swift:268 let observer3 = ZipObserver(lock: _lock, parent: self, index: 2, setNextValue: { self._values3.enqueue($0) }, this: subscription3)Zip+arity.swift:269 let observer4 = ZipObserver(lock: _lock, parent: self, index: 3, setNextValue: { self._values4.enqueue($0) }, this: subscription4)Zip+arity.swift:378 let observer1 = ZipObserver(lock: _lock, parent: self, index: 0, setNextValue: { self._values1.enqueue($0) }, this: subscription1)Zip+arity.swift:379 let observer2 = ZipObserver(lock: _lock, parent: self, index: 1, setNextValue: { self._values2.enqueue($0) }, this: subscription2)Zip+arity.swift:380 let observer3 = ZipObserver(lock: _lock, parent: self, index: 2, setNextValue: { self._values3.enqueue($0) }, this: subscription3)Zip+arity.swift:381 let observer4 = ZipObserver(lock: _lock, parent: self, index: 3, setNextValue: { self._values4.enqueue($0) }, this: subscription4)Zip+arity.swift:382 let observer5 = ZipObserver(lock: _lock, parent: self, index: 4, setNextValue: { self._values5.enqueue($0) }, this: subscription5)Zip+arity.swift:498 let observer1 = ZipObserver(lock: _lock, parent: self, index: 0, setNextValue: { self._values1.enqueue($0) }, this: subscription1)Zip+arity.swift:499 let observer2 = ZipObserver(lock: _lock, parent: self, index: 1, setNextValue: { self._values2.enqueue($0) }, this: subscription2)Zip+arity.swift:500 let observer3 = ZipObserver(lock: _lock, parent: self, index: 2, setNextValue: { self._values3.enqueue($0) }, this: subscription3)Zip+arity.swift:501 let observer4 = ZipObserver(lock: _lock, parent: self, index: 3, setNextValue: { self._values4.enqueue($0) }, this: subscription4)Zip+arity.swift:502 let observer5 = ZipObserver(lock: _lock, parent: self, index: 4, setNextValue: { self._values5.enqueue($0) }, this: subscription5)Zip+arity.swift:503 let observer6 = ZipObserver(lock: _lock, parent: self, index: 5, setNextValue: { self._values6.enqueue($0) }, this: subscription6)Zip+arity.swift:626 let observer1 = ZipObserver(lock: _lock, parent: self, index: 0, setNextValue: { self._values1.enqueue($0) }, this: subscription1)Zip+arity.swift:627 let observer2 = ZipObserver(lock: _lock, parent: self, index: 1, setNextValue: { self._values2.enqueue($0) }, this: subscription2)Zip+arity.swift:628 let observer3 = ZipObserver(lock: _lock, parent: self, index: 2, setNextValue: { self._values3.enqueue($0) }, this: subscription3)Zip+arity.swift:629 let observer4 = ZipObserver(lock: _lock, parent: self, index: 3, setNextValue: { self._values4.enqueue($0) }, this: subscription4)Zip+arity.swift:630 let observer5 = ZipObserver(lock: _lock, parent: self, index: 4, setNextValue: { self._values5.enqueue($0) }, this: subscription5)Zip+arity.swift:631 let observer6 = ZipObserver(lock: _lock, parent: self, index: 5, setNextValue: { self._values6.enqueue($0) }, this: subscription6)Zip+arity.swift:632 let observer7 = ZipObserver(lock: _lock, parent: self, index: 6, setNextValue: { self._values7.enqueue($0) }, this: subscription7)Zip+arity.swift:762 let observer1 = ZipObserver(lock: _lock, parent: self, index: 0, setNextValue: { self._values1.enqueue($0) }, this: subscription1)Zip+arity.swift:763 let observer2 = ZipObserver(lock: _lock, parent: self, index: 1, setNextValue: { self._values2.enqueue($0) }, this: subscription2)Zip+arity.swift:764 let observer3 = ZipObserver(lock: _lock, parent: self, index: 2, setNextValue: { self._values3.enqueue($0) }, this: subscription3)Zip+arity.swift:765 let observer4 = ZipObserver(lock: _lock, parent: self, index: 3, setNextValue: { self._values4.enqueue($0) }, this: subscription4)Zip+arity.swift:766 let observer5 = ZipObserver(lock: _lock, parent: self, index: 4, setNextValue: { self._values5.enqueue($0) }, this: subscription5)Zip+arity.swift:767 let observer6 = ZipObserver(lock: _lock, parent: self, index: 5, setNextValue: { self._values6.enqueue($0) }, this: subscription6)Zip+arity.swift:768 let observer7 = ZipObserver(lock: _lock, parent: self, index: 6, setNextValue: { self._values7.enqueue($0) }, this: subscription7)Zip+arity.swift:769 let observer8 = ZipObserver(lock: _lock, parent: self, index: 7, setNextValue: { self._values8.enqueue($0) }, this: subscription8)