public static T Load <T>(string filename, Encoding encoding, LevelType levelTypeToLoad)
    {
        string filePath = "";

        filename = string.Format("{0}/{1}/{2}", Application.persistentDataPath, levelTypeToLoad, filename);

        Stream stream = null;

        string data = "";

        data = File.ReadAllText(filePath, encoding);

        string decoded = SaveGameEncoder.Decode(data);

        stream = new MemoryStream(encoding.GetBytes(decoded), true);

        T result = SaveGameJsonSerializer.Deserialize <T>(stream, encoding);

        stream.Dispose();
        return(result);
    }