private SerializationStatus(SerializationResult result, object obj = null, Type alt = null, SerializationFixup fix = null, ulong[] missing_ids = null)
 {
     AltType     = alt;
     Fix         = fix;
     Object      = obj;
     RequiredIDs = missing_ids;
     Result      = result;
 }
 internal Fixup(SerializationInstance instance, object o, SerializationFixup fix, ulong[] required_ids)
 {
     Completed   = false;
     Fix         = fix;
     Instance    = instance;
     Object      = o;
     RequiredIDs = new ulong[required_ids.Length];
     required_ids.CopyTo(RequiredIDs, 0);
 }
        /// <summary>
        /// Signals a delayed deserialization, returning a partially deserialized object for fixing later when the specified IDs are present
        /// </summary>
        /// <param name="o">The partially deserialized object</param>
        /// <param name="fix">The action to run once all the missing objects are deserialized</param>
        /// <param name="missing_ids">The missing object IDs, the fixup will be run once these are initially deserialized</param>
        /// <returns>A status stating deserialization couldn't be completed, but is in-progress</returns>
        public static SerializationStatus FixupLater(object o, SerializationFixup fix, ulong[] missing_ids)
        {
            if (fix == null)
            {
                throw new ArgumentNullException(nameof(fix));
            }

            missing_ids = missing_ids ?? Array.Empty <ulong>();

            return(new SerializationStatus(SerializationResult.NeedsFixing, obj: o, fix: fix, missing_ids: missing_ids));
        }