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

            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

/// dispatch_semaphore_t used when waiting for sourcekitd to be restored.
private var sourceKitWaitingRestoredSemaphore = DispatchSemaphore(value: 0)

private extension String {
    /**
    Cache SourceKit requests for strings from UIDs
