         return String(characters)
     }
     
-    public func getUTF8(_ terminator: UTF8.CodeUnit) -> [UTF8.CodeUnit] {
+    public func getUTF8(terminator: UTF8.CodeUnit) -> [UTF8.CodeUnit] {
         var array = Array<UTF8.CodeUnit>()
         var done = true
         

        return unsafeBitCast(getUInt64(), to: Float64.self)
    }
    
    public func getInt8(_ count: Int) -> [Int8] {
        var array = [Int8](repeating: 0, count: count)
        for index in 0..<count { array[index] = getInt8() }
        return array
    }
    
    public func getInt16(_ count: Int) -> [Int16] {
        var array = [Int16](repeating: 0, count: count)
        for index in 0..<count { array[index] = getInt16() }
        return array
    }
    
    public func getInt32(_ count: Int) -> [Int32] {
        var array = [Int32](repeating: 0, count: count)
        for index in 0..<count { array[index] = getInt32() }
        return array
    }
    
    public func getInt64(_ count: Int) -> [Int64] {
        var array = [Int64](repeating: 0, count: count)
        for index in 0..<count { array[index] = getInt64() }
        return array
    }
    
    public func getUInt8(_ count: Int) -> [UInt8] {
        var array = [UInt8](repeating: 0, count: count)
        for index in 0..<count { array[index] = getUInt8() }
        return array
    }
    
    public func getUInt16(_ count: Int) -> [UInt16] {
        var array = [UInt16](repeating: 0, count: count)
        for index in 0..<count { array[index] = getUInt16() }
        return array
    }
    
    public func getUInt32(_ count: Int) -> [UInt32] {
        var array = [UInt32](repeating: 0, count: count)
        for index in 0..<count { array[index] = getUInt32() }
        return array
    }
    
    public func getUInt64(_ count: Int) -> [UInt64] {
        var array = [UInt64](repeating: 0, count: count)
        for index in 0..<count { array[index] = getUInt64() }
        return array
    }
    
    public func getFloat32(_ count: Int) -> [Float32] {
        var array = [Float32](repeating: 0, count: count)
        for index in 0..<count { array[index] = getFloat32() }
        return array
    }
    
    public func getFloat64(_ count: Int) -> [Float64] {
        var array = [Float64](repeating: 0, count: count)
        for index in 0..<count { array[index] = getFloat64() }
        return array
    }
    
    public func getUTF8(_ length: Int) -> String {
        return decodeCodeUnits(getUInt8(length), codec: UTF8())
    }
    
    public func getUTF8(_ terminator: UTF8.CodeUnit = 0) -> String {
        return decodeCodeUnits(getUTF8(terminator), codec: UTF8())
    }
    
    public func getUTF16(_ length: Int) -> String {
        return decodeCodeUnits(getUInt16(length), codec: UTF16())
    }
    
    public func decodeCodeUnits<C : UnicodeCodec>(_ codeUnits: [C.CodeUnit], codec: C) -> String {

        
        source.withUnsafeBytes { (srcPtr: UnsafePointer<UInt8>) -> Void in
            withUnsafeMutableBytes { (dstPtr: UnsafeMutablePointer<UInt8>) -> Void in
                dstPtr.advanced(by: position).initialize(from: srcPtr.advanced(by: source.position), count: count)
            }
        }
        
