private bool GetValue <T>(GameSaveKeySubkeyId key, out List <T> values)
 {
     values = null;
     try
     {
         var subIndex = Reflection.GetKeyIndex(_map, (int)key);
         if (subIndex == -1)
         {
             return(false);
         }
         var list = _map["valueSlots"][subIndex]?[GetTypeKey(typeof(T))];
         if (list == null)
         {
             return(false);
         }
         var size = (int)list["_size"];
         if (size <= 0)
         {
             return(false);
         }
         values = new List <T>();
         var items = list["_items"];
         for (var i = 0; i < size; i++)
         {
             values.Add((T)items[i]);
         }
         return(true);
     }
     catch (Exception e)
     {
         return(false);
     }
 }
 private bool GetValue(GameSaveKeySubkeyId key, out int value)
 {
     value = 0;
     if (!GetValue(key, out List <int> values))
     {
         return(false);
     }
     value = values[0];
     return(true);
 }