 
 		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 {
 



	/// Convenience variable for internal use.
	private var rawCFValue: CFString {

		return self.rawValue as CFString
	}

	/// This is the designated initializer of the UTI class.
	///


	#endif

	// MARK: Accessing Tags

	/// Returns the tag with the specified class.
	///
	/// - Parameter tagClass: The tag class to return.
