      - Returns: Decompressed data.
      */
     public static func decompress(compressedData data: Data) throws -> Data {
-        var out: [String] = []
+        var out = Data()
 
         // Current point of processing in data
         var index = 0

                    shift = nextSymbol.newShift

                    if symbol >= 0 && symbol <= 255 {
                        out.append("".appending(String(UnicodeScalar(UInt8(truncatingBitPattern:
                            UInt(symbol))))))
                    } else if symbol == 256 {
                        break
                    } else if symbol >= 257 && symbol <= 285 {

                                convertToInt(reversedUint8Array: data.bits(from: start, to: end))

                            while length > distance {
                                out.append(Data(out[out.count - distance..<out.count]))
                                length -= distance
                            }
                            if length == distance {
                                out.append(Data(out[out.count - distance..<out.count]))
                            } else {
                                out.append(Data(out[out.count - distance..<out.count + length - distance]))
                            }
                        } else {
                            throw DeflateError.HuffmanTableError
