public static T GetOrLoadOrCreate <T>(string fileName, T defaultFileSaveData = default(T))
    {
        Debug.Log("FileSaveManager: GetOrLoadOrCreate[{0}]".FormatWith(fileName));

        if (!FileSaveContainers.Has(fileName))
        {
            var fileData = FileSaveUtils.Load <T>(fileName);

            if (fileData == null)
            {
                fileData = defaultFileSaveData;
                Create(fileName, fileData);
            }
            else
            {
                var fileSaveContainer = new FileSaveContainer {
                    FileName = fileName,
                    Data     = fileData,
                    DataType = typeof(T)
                };

                FileSaveContainers.Set(fileSaveContainer.FileName, fileSaveContainer);
            }
        }

        return((T)FileSaveContainers.Get(fileName).Data);
    }
    public static T Load <T>(string fileName)
    {
        Debug.Log("FileSaveManager: Load[{0}]".FormatWith(fileName));

        if (!FileSaveContainers.Has(fileName))
        {
            var fileData = FileSaveUtils.Load <T>(fileName);

            if (fileData == null)
            {
                return(default(T));
            }

            var fileSaveContainer = new FileSaveContainer {
                FileName = fileName,
                Data     = fileData,
                DataType = typeof(T)
            };

            FileSaveContainers.Set(fileSaveContainer.FileName, fileSaveContainer);
        }

        return((T)FileSaveContainers.Get(fileName).Data);
    }