     }
 
     static func sizeFor(bytes: ArraySlice<Byte>) throws -> Int {
+        if bytes.count == 0 {
+            return 0
+        }
+        
         guard let firstByte = bytes.first else {
             throw UnpackError.incorrectNumberOfBytes
         }

    }

    public static func unpack(_ bytes: ArraySlice<Byte>) throws -> String {
        guard let firstByte = bytes.first else {
            throw UnpackError.incorrectNumberOfBytes
        }

    }

    static func markerSizeFor(bytes: ArraySlice<Byte>) throws -> Int {
        if bytes.count == 0 {
            return 0
        }

        guard let firstByte = bytes.first else {
            throw UnpackError.incorrectNumberOfBytes
        }
