         ///      We use them to generate the references of the objects that depend on them.
         ///      For instance, the reference of a build file, is generated from the reference of
         ///      the file it refers to.
-        let identifiers = [String(describing: project), project.name]
+        let identifiers = [project.name]
         generateProjectAndTargets(project: project, identifiers: identifiers)
         try generateGroupReferences(project.mainGroup, identifiers: identifiers)
         if let productsGroup: PBXGroup = project.productsGroup {

    func generateProjectAndTargets(project: PBXProject,
                                   identifiers: [String]) {
        // Project
        if project.reference.temporary {
            project.reference.fix(generate(identifiers: identifiers))
        }

        // Targets
        let targets: [PBXTarget] = project.targetReferences.objects()
        targets.forEach { target in

            var identifiers = identifiers
            identifiers.append(String(describing: target))
            identifiers.append(target.name)

            if target.reference.temporary {
                target.reference.fix(generate(identifiers: identifiers))
            }
        }
    }


    fileprivate func generateTargetReferences(_ target: PBXTarget,
                                              identifiers: [String]) throws {
        var identifiers = identifiers
        identifiers.append(target.name)

        // Configuration list
