/// <summary>
        /// Writes backup start info to file. <br/>
        /// The file is created new or overwritten if it exists.
        /// </summary>
        /// <param name="filePath">The path of the file to write to.</param>
        /// <param name="value">The backup start info to write.</param>
        /// <exception cref="BackupStartInfoFileIOException">If the file could not be written to.</exception>
        public static void Write(string filePath, BackupStartInfo value)
        {
            JsonSerializerOptions jsonOptions = new() { WriteIndented = true };     // Pretty print for human reading.
            var bytes = JsonSerializer.SerializeToUtf8Bytes(value, jsonOptions);

            try {
                FilesystemException.ConvertSystemException(() => File.WriteAllBytes(filePath, bytes), () => filePath);
            }
            catch (FilesystemException e) {
                throw new BackupStartInfoFileIOException(filePath, e);
            }
        }
    }
 public BackupMetadata(string name, BackupStartInfo startInfo, BackupManifest manifest)
 {
     Name      = name;
     StartInfo = startInfo;
     Manifest  = manifest;
 }