 	public static var arbitrary : Gen<Dictionary<Key, Value>> {
 		return [Key].arbitrary.flatMap { (k : [Key]) in
 			return [Value].arbitrary.flatMap { (v : [Value]) in
-				return Gen.pure(Dictionary(zip(k, v)))
+				return Gen.pure(Dictionary(zip(k, v)) { $1 })
 			}
 		}
 	}

	fatalError("Array could not produce a first element")
}

extension Dictionary {
	fileprivate init<S : Sequence>(_ pairs : S)
		where S.Iterator.Element == (Key, Value)
	{
		self.init()
		var g = pairs.makeIterator()
		while let (k, v): (Key, Value) = g.next() {
			self[k] = v
		}
	}
}

	}
}

// MARK: - Implementation Details

private func removes<A : Arbitrary>(_ k : Int, n : Int, xs : [A]) -> [[A]] {
	let xs2 : [A] = Array(xs.suffix(max(0, xs.count - k)))
