StorageCrc64Composer
Helper code for composing crc64 values together.
            
                using System;
using System.Collections.Generic;
using System.Linq;
namespace Azure.Storage
{
    internal static class StorageCrc64Composer
    {
        public static Memory<byte> Compose(params(byte[] Crc64, long OriginalDataLength)[] partitions)
        {
            return Compose(partitions.AsEnumerable());
        }
        public static Memory<byte> Compose(IEnumerable<(byte[] Crc64, long OriginalDataLength)> partitions)
        {
            return new Memory<byte>(BitConverter.GetBytes(Compose(from tup in (IEnumerable<(byte[], long)>)partitions
            select (BitConverter.ToUInt64(tup.Crc64, 0), tup.OriginalDataLength))));
        }
        public static ulong Compose(IEnumerable<(ulong Crc64, long OriginalDataLength)> partitions)
        {
            ulong num = 0;
            long num2 = 0;
            foreach ((ulong, long) partition in partitions) {
                num = StorageCrc64Calculator.Concatenate(0, 0, num, (ulong)num2, 0, partition.Item1, (ulong)partition.Item2);
                num2 += partition.Item2;
            }
            return num;
        }
    }
}