         return MemoryLayout<Buffer>.size
     }
 }
-#endif


internal extension Data {
    
    #if swift(>=5.0) || (swift(>=4.2) && XCODE)
    func subdataNoCopy(in range: Range<Int>) -> Data {
        
        // stored in heap, can reuse buffer
        if count > Data.inlineBufferSize {
            
            #if swift(>=5.0)
            return withUnsafeBytes { (buffer: UnsafeRawBufferPointer) in
                Data(bytesNoCopy: UnsafeMutableRawPointer(mutating: buffer.baseAddress!.advanced(by: range.lowerBound)),
                     count: range.count,
                     deallocator: .none)
            }
            #else
            return withUnsafeBytes {
                Data(bytesNoCopy: UnsafeMutableRawPointer(mutating: $0.advanced(by: range.lowerBound)),
                     count: range.count,
                     deallocator: .none)
            }
            #endif
            
        } else {
            

            return subdata(in: range)
        }
    }
    
    func suffixNoCopy(from index: Int) -> Data {
        return subdataNoCopy(in: index ..< count)
    }
    
    func suffixCheckingBounds(from start: Int) -> Data {
        
        if count > start {
            return Data(suffix(from: start))
        } else {
            return Data()
        }
    }
}

internal extension Data {
    
    /// Size of the inline buffer for `Foundation.Data` used in Swift 5.
    ///
