             }
         }
 
-        @inlinable
-        var hashValue: Int {
-            let count: Int = numericCast(length)
-            return Swift.withUnsafeBytes(of: bytes) { (rawBuffer) -> Int in
-                return Int(bitPattern: CFHashBytes(UnsafeMutablePointer(mutating: rawBuffer.baseAddress?.assumingMemoryBound(to: UInt8.self)), count))
-            }
+        @inlinable @inline(__always) // This should always be inlined into _Representation.hash(into:).
+        func hash(into hasher: inout Hasher) {
+            hasher.combine(length)
+            Swift.withUnsafeBytes(of: bytes) { hasher.combine(bytes: $0) }
         }
     }
 

    //
    
    /// The hash value for the data.
    @inlinable
    public var hashValue: Int {
        return _representation.hashValue
    }
    
    @inlinable

            }
        }
        
        @inlinable @inline(__always) // This should always be inlined into Data.hash(into:).
        func hash(into hasher: inout Hasher) {
            switch self {
            case .empty:
                hasher.combine(Int(bitPattern: CFHashBytes(nil, 0)))
            case .inline(let inline):
                inline.hash(into: &hasher)
            case .slice(let slice):
                slice.hash(into: &hasher)
            case .large(let large):
                large.hash(into: &hasher)
            }
        }
    }
