import Foundation final class KeyBox: NSObject { let wrappedValue: Value init(_ wrappedValue: Value) { self.wrappedValue = wrappedValue } override var hash: Int { var hasher = Hasher() hasher.combine(wrappedValue) return hasher.finalize() } override func isEqual(_ object: Any?) -> Bool { guard let other = object as? KeyBox else { return false } return wrappedValue == other.wrappedValue } }