     }
 }
 
-extension XCBuildMessage: Decodable, Equatable {
+extension XCBuildMessage: Codable, Equatable {
     enum CodingKeys: CodingKey {
         case kind
     }

    case targetDiagnostic(TargetDiagnosticInfo)
}

extension XCBuildMessage.BuildDiagnosticInfo: Decodable, Equatable {}
extension XCBuildMessage.BuildCompletedInfo.Result: Decodable, Equatable {}
extension XCBuildMessage.BuildCompletedInfo: Decodable, Equatable {}
extension XCBuildMessage.BuildOutputInfo: Decodable, Equatable {}
extension XCBuildMessage.TargetUpToDateInfo: Decodable, Equatable {}
extension XCBuildMessage.TaskDiagnosticInfo: Decodable, Equatable {}
extension XCBuildMessage.TargetDiagnosticInfo: Decodable, Equatable {}

extension XCBuildMessage.DidUpdateProgressInfo: Decodable, Equatable {
    enum CodingKeys: String, CodingKey {
        case message
        case percentComplete

    }
}

extension XCBuildMessage.TargetCompleteInfo: Codable, Equatable {
    enum CodingKeys: String, CodingKey {
        case targetID = "id"
    }
