         pairs.enumerated().forEach { order[$0.element.name.value] = $0.offset }
         
         let defaultConstructorName = IdentifierExpression(value: "__init__", grouped: false)
-        let defaultConstructorSignature = StaticSignatureExpression(name: defaultConstructorName, receiverType: name, parameters: pairs, returnType: name, genericConstraints: nil)
+        let defaultConstructorSignature = StaticSignatureExpression(name: defaultConstructorName, receiverType: name, parameters: pairs, returnType: name, genericConstraints: nil, absolutised: false)
         
         // TODO - Optional parameters, default parameters
         
-        return TypeDefExpression(name: name, properties: pairs, propertyOrder: order, constructorSignatures: [defaultConstructorSignature])
+        return TypeDefExpression(name: name, properties: pairs, propertyOrder: order, constructorSignatures: [defaultConstructorSignature], absolutised: false)
     }
     
     /// A pair consists of an identifier followed by a type identifier, e.g. i Int

            
            let emptyConstructorName = IdentifierExpression(value: "__init__", grouped: false)
            
            let emptyConstructorSignature = StaticSignatureExpression(name: emptyConstructorName, receiverType: name, parameters: [], returnType: name, genericConstraints: nil)
            
            return TypeDefExpression (name: name, properties: [], propertyOrder: [:], constructorSignatures: [emptyConstructorSignature])
        }
        
        let pairs = try parsePairs()

    
    public let constructorSignatures: [StaticSignatureExpression]
    
    public var absolutised: Bool = false
    
    public let hashValue: Int = nextHashValue()
    
    public mutating func absolutise(absoluteName: String) {
        self.name.value = absoluteName
        self.absolutised = true
    }
}

