     @inlinable
     public static func == (lhs: GIRType, rhs: GIRType) -> Bool {
         return lhs.isAlias == rhs.isAlias && lhs.parent == rhs.parent && lhs.ctype == rhs.ctype
-            && lhs.name == rhs.name && lhs.swiftName == rhs.swiftName
+            && lhs.name == rhs.name && lhs.swiftName == rhs.swiftName && lhs.typeName == rhs.typeName
     }
 
     /// Hashes the essential components of this type by feeding them into the

    /// Designated initialiser for a GIR type
    /// - Parameters:
    ///   - name: The name of the type
    ///   - swiftName: The name of the type in Swift (or `nil` if same as `name`)
    ///   - typeName: The name of the underlying type (or `nil` if same as `ctype`)
    ///   - ctype: The name of the type in C
    ///   - superType: The parent or alias type (or `nil` if fundamental)
    ///   - isAlias: An indicator whether the type is an alias of its supertype that does not need casting

    let maybeType = GIR.namedTypes[name]?.first { $0.ctype == info.innerType }
    let type = maybeType ?? GIRType(name: name, typeName: typeName, ctype: info.innerType)
    let t = addType(type)
    return TypeReference(type: t, identifier: identifier, isConst: info.isConst, isOptional: isOptional, constPointers: info.indirection)
}

/// Add a new type to the list of known types
