     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))'")
             }

    throws where Value == [C.Element]
    {
        self.init(minimumCapacity: minimumCapacity)
        while let value = try cursor.next() {
            try self[keyForValue(value), default: []].append(value)
        }
    }

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