     public static var _nsErrorDomain: String { return NSCocoaErrorDomain }
 
     /// The error code itself.
-    public struct Code : RawRepresentable, _ErrorCodeProtocol {
+    public struct Code : RawRepresentable, Hashable, _ErrorCodeProtocol {
         public typealias _ErrorType = CocoaError
 
         public let rawValue: Int

        public static var coderValueNotFound:                       CocoaError.Code { return CocoaError.Code(rawValue: 4865) }
        public static var coderInvalidValue:                        CocoaError.Code { return CocoaError.Code(rawValue: 4866) }
    }
}

public extension CocoaError {

            case NSPOSIXErrorDomain:
                return String(cString: strerror(Int32(code)), encoding: .ascii)
            case NSCocoaErrorDomain:
                return CocoaError.errorMessages[CocoaError.Code(rawValue: code)]
            case NSURLErrorDomain:
                return nil
            default:
