public Archive(ArchiveMetadata metadata, Signature signature, TaxSummary taxSummary, ReportedValue reportedValue)
 {
     Metadata      = metadata;
     Signature     = signature;
     TaxSummary    = taxSummary;
     ReportedValue = reportedValue;
 }
 public static ITry <Archive, IEnumerable <string> > Parse(Dto.Archive archive)
 {
     return(ArchiveMetadata.Create(archive).FlatMap(metadata =>
     {
         return Try.Aggregate(
             TaxSummary.Create(archive, metadata.Version),
             ReportedValue.Create(archive, metadata.Version),
             Signature.Create(archive.Signature.Content),
             (taxSummary, reportedValue, signature) => new Archive(metadata, signature, taxSummary, reportedValue)
             );
     }));
 }