private static void ChaFileSaveFileHook(ChaFile file, BlockHeader header, ref long[] array3)
            {
                Dictionary <string, PluginData> extendedData = GetAllExtendedData(file);

                if (extendedData == null)
                {
                    currentlySavingData = null;
                    return;
                }

                currentlySavingData = MessagePackSerializer.Serialize(extendedData);

                //get offset
                long offset = array3.Sum();
                long length = currentlySavingData.LongLength;

                //insert our custom data length at the end
                Array.Resize(ref array3, array3.Length + 1);
                array3[array3.Length - 1] = length;

                //add info about our data to the block header
                BlockHeader.Info info = new BlockHeader.Info
                {
                    name    = Marker,
                    version = DataVersion.ToString(),
                    pos     = offset,
                    size    = length
                };

                header.lstInfo.Add(info);
            }
            public static void ChaFileSaveFileHook(ChaFile file, BlockHeader header, ref long[] array3)
            {
                var extendedData = GetAllExtendedData(file);

                if (extendedData == null || extendedData.Count == 0)
                {
                    currentlySavingData = null;
                    return;
                }

                try
                {
                    currentlySavingData = MessagePackSerialize(extendedData);
                    if (currentlySavingData.LongLength == 0)
                    {
                        currentlySavingData = null;
                        return;
                    }
                }
                catch (Exception e)
                {
                    _logger.Log(LogLevel.Warning, $"Failed to save extended data in card. {e.Message}");
                    currentlySavingData = null;
                    return;
                }

                //get offset
                var offset = array3.Sum();
                var length = currentlySavingData.LongLength;

                //insert our custom data length at the end
                Array.Resize(ref array3, array3.Length + 1);
                array3[array3.Length - 1] = length;

                //add info about our data to the block header
                var info = new BlockHeader.Info
                {
                    name    = Marker,
                    version = Version.ToString(),
                    pos     = offset,
                    size    = length
                };

                header.lstInfo.Add(info);
            }