 	import CoreServices
 #endif
 
+/// Instances of the UTI class represent a specific Universal Type Identifier, e.g. kUTTypeMPEG4.
+
 public class UTI: RawRepresentable, Equatable {
+
+
+	/// The TagClass enum represents the supported tag classes.
+	///
+	/// - fileExtension: kUTTagClassFilenameExtension
+	/// - mimeType: kUTTagClassMIMEType
+	/// - pbType: kUTTagClassNSPboardType
+	/// - osType: kUTTagClassOSType
 
 	public enum TagClass: String {
 

		#endif

		/// Convenience variable for internal use.
		fileprivate var rawCFValue: CFString {
			return self.rawValue as CFString
		}


		return identifiers.flatMap { UTI(rawValue: $0 as String) }
	}

	// MARK: Equality and Conformance to other UTIs


	/// Checks if the receiver conforms to a specified UTI.
	///
	/// - Parameter otherUTI: The UTI to which the receiver is compared.
	/// - Returns: ```true``` if the receiver conforms to the specified UTI, ```false```otherwise.

	public func conforms(to otherUTI: UTI) -> Bool {

		return UTTypeConformsTo(self.rawCFValue, otherUTI.rawCFValue) as Bool
	}

	public static func ==(lhs: UTI, rhs: UTI) -> Bool {

		return UTTypeEqual(lhs.rawCFValue, rhs.rawCFValue) as Bool
	}

	// MARK: Accessing Information about an UTI

	public var description: String? {

		let unamanagedDescription = UTTypeCopyDescription(self.rawCFValue)

		guard let description = unamanagedDescription?.takeRetainedValue() as? String else {
			return nil
		}

		return description
	}

	public var declaration: [AnyHashable:Any]? {

		let unamanagedDeclaration = UTTypeCopyDeclaration(self.rawCFValue)

		guard let declaration = unamanagedDeclaration?.takeRetainedValue() as? [AnyHashable:Any] else {
			return nil
		}

		return declaration
	}

	public var declaringBundleURL: URL? {

		let unamanagedURL = UTTypeCopyDeclaringBundleURL(self.rawCFValue)

		guard let url = unamanagedURL?.takeRetainedValue() as? URL else {
			return nil
		}

		return url
	}

	/// Returns ```true``` if the receiver is a dynamic UTI.

	public var isDynamic: Bool {

		return UTTypeIsDynamic(self.rawCFValue)
	}
}


// MARK: System defined UTIs

public extension UTI {

