             storage.copyBytes(to: pointer, from: range)
         }
 
-        @inlinable
-        var hashValue: Int {
-            let hashRange = startIndex..<Swift.min(startIndex + 80, endIndex)
-            return storage.withUnsafeBytes(in: hashRange) {
-                return Int(bitPattern: CFHashBytes(UnsafeMutablePointer(mutating: $0.baseAddress?.assumingMemoryBound(to: UInt8.self)), CFIndex($0.count)))
+        @inlinable @inline(__always) // This should always be inlined into _Representation.hash(into:).
+        func hash(into hasher: inout Hasher) {
+            hasher.combine(count)
+
+            // Hash at most the first 80 bytes of this data.
+            let range = startIndex ..< Swift.min(startIndex + 80, endIndex)
+            storage.withUnsafeBytes(in: range) {
+                hasher.combine(bytes: $0)
             }
         }
     }

            storage.copyBytes(to: pointer, from: range)
        }

        @inlinable
        var hashValue: Int {
            let hashRange = startIndex..<Swift.min(startIndex + 80, endIndex)
            return storage.withUnsafeBytes(in: hashRange) {
                return Int(bitPattern: CFHashBytes(UnsafeMutablePointer(mutating: $0.baseAddress?.assumingMemoryBound(to: UInt8.self)), $0.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) }
        }
    }

