     }
 }
 
+extension DBusSignature.StructureType: Equatable {
+    
+    public static func == (lhs: DBusSignature.StructureType, rhs: DBusSignature.StructureType) -> Bool {
+        
+        return lhs.elements == rhs.elements
+    }
+}
+
 extension DBusSignature.StructureType: RawRepresentable {
     
     public init?(rawValue: String) {

        fatalError()
    }
}

public extension DBusSignature {
    
    public enum ArrayType {
        
        case dictionary(ValueType)
        case value(ValueType)
    }
}

extension DBusSignature.ArrayType: RawRepresentable {
    
    public init?(rawValue: String) {
        
        fatalError()
    }
    
    public var rawValue: String {
        
        fatalError()
    }
}


import CDBus

/// DBus Signature
public struct DBusSignature {
    
    @_versioned
    internal private(set) var elements: [ValueType]
    
    public init(_ elements: [ValueType]) {
        
        self.elements = elements
    }
}

extension DBusSignature: Equatable {
    
    public static func == (lhs: DBusSignature, rhs: DBusSignature) -> Bool {
        
        return lhs.elements == rhs.elements
    }
}

extension DBusSignature: Hashable {
    
    public var hashValue: Int {
        
        return rawValue.hashValue
    }
}

extension DBusSignature: CustomStringConvertible {
    
    public var description: String {
        
        return rawValue
    }
}

extension DBusSignature: RawRepresentable {
