         }
     }
 
-    @inline(__always) private static func getSubstring(string: String, start: UInt16, end: UInt16) -> String {
+    @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(":")
+    @inline(__always) private static func parse(userInfoString: String) -> URI.UserInfo? {
+        let userInfoElements = userInfoString.split(by: ":")
         if userInfoElements.count == 2 {
             if let
                 username = try? String(percentEncoded: userInfoElements[0]),


        if u.field_set & 64 != 0 {
            let userInfoString = URI.getSubstring(string, start: u.user_info_start, end: u.user_info_end)
            userInfo = URI.parseUserInfoString(userInfoString)
        } else {
            userInfo = nil
        }


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