/// <summary>
 /// Sets the metadata on the dictionary.
 /// </summary>
 /// <param name="metadata"></param>
 /// <param name="collection"></param>
 void SetMetadata(StateObjectMetadata metadata, MetadataCollection collection)
 {
     collection["ExtraFlags"] = metadata.ExtraFlags?.ToString() ?? "";
     collection["Timeout"]    = metadata.Timeout?.ToString() ?? "";
     collection["Altered"]    = metadata.Altered?.ToString() ?? "";
     collection["LockCookie"] = metadata.LockCookie?.ToString() ?? "";
     collection["LockTime"]   = metadata.LockTime?.ToString() ?? "";
 }
        /// <summary>
        /// Attempts to parse the given metadata values.
        /// </summary>
        /// <param name="collection"></param>
        /// <returns></returns>
        StateObjectMetadata GetMetadata(MetadataCollection collection)
        {
            var metadata = new StateObjectMetadata();

            metadata.ExtraFlags = collection["ExtraFlags"] is string fd && uint.TryParse(fd, out var fv) ? (uint?)fv : null;
            metadata.Timeout    = collection["Timeout"] is string td && TimeSpan.TryParse(td, out var tv) ? (TimeSpan?)tv : null;
            metadata.Altered    = collection["Altered"] is string ad && DateTime.TryParse(ad, out var av) ? (DateTime?)av : null;
            metadata.LockCookie = collection["LockCookie"] is string cd && uint.TryParse(cd, out var cv) ? (uint?)cv : null;
            metadata.LockTime   = collection["LockTime"] is string ld && DateTime.TryParse(ld, out var lv) ? (DateTime?)lv : null;
            return(metadata);
        }
 /// <summary>
 /// Initializes a new instance.
 /// </summary>
 /// <param name="metadata"></param>
 /// <param name="buffer"></param>
 public StateObjectData(StateObjectMetadata metadata, byte[] buffer)
 {
     Metadata = metadata ?? throw new ArgumentNullException(nameof(metadata));
     Buffer   = buffer ?? throw new ArgumentNullException(nameof(buffer));
 }