public Payload()
        {
            Type = PayloadTypeRegistry.GetNetworkType(this.GetType());

#if ANDROID_DEBUG
            MREAPI.Logger.LogDebug($"Creating payload of type {Type} for the payload class type {this.GetType()}");
#endif
        }
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            try
            {
                JObject jObject     = JObject.Load(reader);
                var     networkType = jObject["type"].ToObject <string>();
                Payload payload     = PayloadTypeRegistry.CreatePayloadFromNetwork(networkType);
                serializer.Populate(jObject.CreateReader(), payload);

                return(payload);
            }
            catch (Exception e)
            {
                MREAPI.Logger.LogError($"Failed to create payload from json.  Exception: {e.Message}\nStack Trace: {e.StackTrace}");
                throw;
            }
        }