     // MARK: -
 
     private static func UTIsForTagClass(_ tagClass: String, tag: String, conformingToUTI: UTI?) -> [UTI] {
-        let conformingToUTIString: CFString? = conformingToUTI?.UTIString
-        guard let rawUTIs = UTTypeCreateAllIdentifiersForTag(tagClass, tag, conformingToUTIString)?.takeRetainedValue() else { return [] }
+        let conformingToUTIString: CFString? = conformingToUTI?.UTIString as CFString?
+        guard let rawUTIs = UTTypeCreateAllIdentifiersForTag(tagClass as CFString, tag as CFString, conformingToUTIString)?.takeRetainedValue() else { return [] }
         return (rawUTIs as NSArray as? [String] ?? []).map { UTI($0) }
     }
 


    public var iconFileURL: URL? {
        if let iconFile = declaration.iconFile {
            return self.declaringBundle?.urlForResource(iconFile, withExtension: nil) ??
                   self.declaringBundle?.urlForResource(iconFile, withExtension: "icns")
        }
        return nil
    }

    }

    public var declaration: Declaration {
        return Declaration(declaration: UTTypeCopyDeclaration(self.UTIString as CFString)?.takeRetainedValue() as [NSObject: AnyObject]? ?? [:])
    }

    public var declaringBundle: Bundle? {
        if let url = UTTypeCopyDeclaringBundleURL(UTIString as CFString)?.takeRetainedValue() {
            return Bundle(url: url as URL)
        }
        return nil
