 /// dispatch_semaphore_t used when waiting for sourcekitd to be restored.
 private var sourceKitWaitingRestoredSemaphore = DispatchSemaphore(value: 0)
 
-/// SourceKit UID to String map.
-private var _uidStringMap = [sourcekitd_uid_t: String]()
-private var _uidStringMapLock = NSLock()
-
-/// Thread safe read from sourceKitUID map
-private func uidString(`for` sourceKitUID: sourcekitd_uid_t) -> String? {
-    _uidStringMapLock.lock()
-    defer { _uidStringMapLock.unlock() }
-    return _uidStringMap[sourceKitUID]
-}
-
-/// Thread safe write from sourceKitUID map
-private func setUIDString(uidString: String, `for` identifier: sourcekitd_uid_t) {
-    _uidStringMapLock.lock()
-    defer { _uidStringMapLock.unlock() }
-    _uidStringMap[identifier] = uidString
-}
-
 private extension String {
     /**
     Cache SourceKit requests for strings from UIDs

            For avoiding those penalty, replaces with enum's rawValue String if defined in SourceKitten.
            That does not cause calling `decomposedStringWithCanonicalMapping`.
            */
            let uidString = String(uidString: uidString)
            setUIDString(uidString: uidString, for: sourceKitUID)

            self = uidString
            return
        }
        return nil

    - returns: Cached UID string if available, nil otherwise.
    */
    init?(sourceKitUID: sourcekitd_uid_t) {
        let length = sourcekitd_uid_get_length(sourceKitUID)
        let bytes = sourcekitd_uid_get_string_ptr(sourceKitUID)
        if let uidString = String(bytes: bytes!, length: length) {
