             remoteReference = objectReferenceRepository.getOrCreate(reference: remoteRefString, objects: objects)
         }
         fileType = try container.decodeIfPresent(.fileType)
-        path = try container.decodeIfPresent(.path)
-        sourceTree = try container.decodeIfPresent(.sourceTree)
         try super.init(from: decoder)
     }
-}
 
-// MARK: - PBXReferenceProxy
-
-extension PBXReferenceProxy: PlistSerializable {
-    func plistKeyAndValue(proj _: PBXProj, reference: String) -> (key: CommentedString, value: PlistValue) {
-        var dictionary: [CommentedString: PlistValue] = [:]
+    override func plistKeyAndValue(proj: PBXProj, reference: String) throws -> (key: CommentedString, value: PlistValue) {
+        guard case .dictionary(var dictionary) = try super.plistKeyAndValue(proj: proj, reference: reference).value else {
+            fatalError("super implementation changed and we didn’t realise!")
+        }
         dictionary["isa"] = .string(CommentedString(PBXReferenceProxy.isa))
         if let fileType = fileType {
             dictionary["fileType"] = .string(CommentedString(fileType))
         }
-        if let path = path {
-            dictionary["path"] = .string(CommentedString(path))
-        }
         if let remoteReference = remoteReference {
             dictionary["remoteRef"] = .string(CommentedString(remoteReference.value, comment: "PBXContainerItemProxy"))
-        }
-        if let sourceTree = sourceTree {
-            dictionary["sourceTree"] = sourceTree.plist()
         }
         return (key: CommentedString(reference, comment: path),
                 value: .dictionary(dictionary))

/// A proxy for another object which might belong to another project
/// contained in the same workspace of the document.
/// This class is referenced by PBXTargetDependency.
public final class PBXReferenceProxy: PBXObject {
    // MARK: - Attributes

    /// Element file type
    public var fileType: String?

    /// Element path.
    public var path: String?

    /// Element remote reference.
    var remoteReference: PBXObjectReference?

        }
    }

    // MARK: - Init

    /// Initializes the reference proxy.
