private void UpdateHash(HashAlgorithm hash, long length, UpdateChecksum update) {
HashAlgorithmReuse reuse = hash as HashAlgorithmReuse;
if (reuse != null && update != null) {
using (HashAlgorithm hashReuse = (HashAlgorithm)reuse.Clone()) {
hashReuse.TransformFinalBlock(new byte[0], 0, 0);
update(hashReuse.Hash, length);
}
}
}
}