     private var changeSignal = OwningSignal<Change, ConcatenatedObservableArray<First, Second>>()
     private var c1: Connection? = nil
     private var c2: Connection? = nil
+    private var firstCount = 0
+    private var secondCount = 0
 
     init(first: First, second: Second) {
         self.first = first

        c2!.disconnect()
        c1 = nil
        c2 = nil
    }
}

    }

    func start(_ signal: Signal<Change>) {
        firstCount = first.count
        secondCount = second.count
        c1 = first.futureChanges.connect { change in
            precondition(self.firstCount == change.initialCount)
            self.firstCount = change.finalCount
            self.changeSignal.send(change.widen(startIndex: 0, initialCount: change.initialCount + self.secondCount))
        }
        c2 = second.futureChanges.connect { change in
            precondition(self.secondCount == change.initialCount)
            self.secondCount = change.finalCount
            self.changeSignal.send(change.widen(startIndex: self.firstCount, initialCount: self.firstCount + change.initialCount))
        }
    }

