     throws where C.Element == (Key, Value)
     {
         self.init()
-        while let (key, value) = try keysAndValues.next() {
+        try keysAndValues.forEach { key, value in
             if updateValue(value, forKey: key) != nil {
                 fatalError("Duplicate values for key: '\(String(describing: key))'")
             }

    public init<C: Cursor>(_ cursor: C, minimumCapacity: Int) throws where C.Element == Element {
        self.init()
        reserveCapacity(minimumCapacity)
        while let element = try cursor.next() {
            append(element)
        }
    }
}


    /// - parameter cursor: A cursor of values to gather into a set.
    public init<C: Cursor>(_ cursor: C) throws where C.Element == Element {
        self.init()
        try cursor.forEach { insert($0) }
    }
    
    /// Creates a set containing the elements of a cursor.
