 
         if u.field_set & 16 != 0 {
             let queryString = URI.getSubstring(string, start: u.query_start, end: u.query_end)
-            query = URI.parseQueryString(queryString)
+            query = URI.parse(queryString: queryString)
         } else {
             query = [:]
         }

        }
    }

    @inline(__always) private static func getSubstring(string: String, start: UInt16, end: UInt16) -> String {
        return string[string.startIndex.advanced(by: Int(start)) ..< string.startIndex.advanced(by: Int(end))]
    }

    @inline(__always) private static func parseUserInfoString(userInfoString: String) -> URI.UserInfo? {
        let userInfoElements = userInfoString.split(":")
        if userInfoElements.count == 2 {
            if let
                username = try? String(percentEncoded: userInfoElements[0]),

        return nil
    }

    @inline(__always) private static func parse(queryString: String) -> Query {
        var queries: Query = [:]
        let queryTuples = queryString.split(by: "&")
        for tuple in queryTuples {
            let queryElements = tuple.split(by: "=")
            if queryElements.count == 1 {
                if let key = try? String(percentEncoded: queryElements[0]) {
                    queries[key] = QueryField([])
