private void ReadEventCommand(BinaryReadStatus readStatus, ICollection <IEventCommand> commandList)
        {
            // 数値変数の数
            var numVarLength = readStatus.ReadByte();

            readStatus.IncreaseByteOffset();

            // 数値変数
            var numVarList = new List <int>();

            for (var i = 0; i < numVarLength; i++)
            {
                var numVar = readStatus.ReadInt();
                numVarList.Add(numVar);
                readStatus.IncreaseIntOffset();
            }

            // インデント
            var indent = (sbyte)readStatus.ReadByte();

            readStatus.IncreaseByteOffset();

            // 文字データ数
            var strVarLength = readStatus.ReadByte();

            readStatus.IncreaseByteOffset();

            // 文字列変数
            var strVarList = new List <string>();

            for (var i = 0; i < strVarLength; i++)
            {
                var woditorString = readStatus.ReadString();
                strVarList.Add(woditorString.String);
                readStatus.AddOffset(woditorString.ByteLength);
            }

            // 動作指定フラグ
            var hasMoveCommand = readStatus.ReadByte() != 0;

            readStatus.IncreaseByteOffset();

            // 動作指定コマンド
            ActionEntry actionEntry = null;

            if (hasMoveCommand)
            {
                actionEntry = new ActionEntry();
                ReadEventActionEntry(readStatus, actionEntry);
            }

            // 引数の数チェック
            if (numVarLength != numVarList.Count)
            {
                throw new InvalidOperationException(
                          "指定された数値引数の数と実際の数値引数の数が一致しません。");
            }
            if (strVarLength != strVarList.Count)
            {
                throw new InvalidOperationException(
                          "指定された文字列引数の数と実際の文字列引数の数が一致しません。");
            }

            // 結果
            var eventCommand = EventCommandFactory.CreateRaw(
                numVarList,
                indent,
                strVarList,
                actionEntry);

            commandList.Add(eventCommand);
        }
        /// <summary>
        /// イベントコマンド
        /// </summary>
        /// <param name="status">読み込み経過状態</param>
        /// <param name="commandList">データ格納先</param>
        /// <exception cref="InvalidOperationException">ファイル仕様が異なる場合</exception>
        private void ReadEventCommand(FileReadStatus status, ICollection <IEventCommand> commandList)
        {
            // 数値変数の数
            var numVarLength = status.ReadByte();

            status.IncreaseByteOffset();

            Logger.Debug(FileIOMessage.SuccessRead(typeof(EventCommandListReader),
                                                   "数値変数の数", numVarLength));

            // 数値変数
            var numVarList = new List <int>();

            for (var i = 0; i < numVarLength; i++)
            {
                var numVar = status.ReadInt();
                numVarList.Add(numVar);
                status.IncreaseIntOffset();

                Logger.Debug(FileIOMessage.SuccessRead(typeof(EventCommandListReader),
                                                       $"数値変数{i}", numVar));
            }

            // インデント
            var indent = (sbyte)status.ReadByte();

            status.IncreaseByteOffset();

            Logger.Debug(FileIOMessage.SuccessRead(typeof(EventCommandListReader),
                                                   "インデント", indent));

            // 文字データ数
            var strVarLength = status.ReadByte();

            status.IncreaseByteOffset();

            Logger.Debug(FileIOMessage.SuccessRead(typeof(EventCommandListReader),
                                                   "文字列変数の数", strVarLength));

            // 文字列変数
            var strVarList = new List <string>();

            for (var i = 0; i < strVarLength; i++)
            {
                var woditorString = status.ReadString();
                strVarList.Add(woditorString.String);
                status.AddOffset(woditorString.ByteLength);

                Logger.Debug(FileIOMessage.SuccessRead(typeof(EventCommandListReader),
                                                       $"文字列変数{i}", woditorString.String));
            }

            // 動作指定フラグ
            var hasMoveCommand = status.ReadByte() != 0;

            status.IncreaseByteOffset();

            Logger.Debug(FileIOMessage.SuccessRead(typeof(EventCommandListReader),
                                                   "動作指定フラグ", hasMoveCommand));

            // 動作指定コマンド
            ActionEntry actionEntry = null;

            if (hasMoveCommand)
            {
                actionEntry = new ActionEntry();
                ReadEventActionEntry(status, actionEntry);
            }

            // 引数の数チェック
            if (numVarLength != numVarList.Count)
            {
                throw new InvalidOperationException(
                          "指定された数値引数の数と実際の数値引数の数が一致しません。");
            }
            if (strVarLength != strVarList.Count)
            {
                throw new InvalidOperationException(
                          "指定された文字列引数の数と実際の文字列引数の数が一致しません。");
            }

            // 結果
            var eventCommand = EventCommandFactory.CreateRaw(
                numVarList,
                indent,
                strVarList,
                actionEntry);

            Logger.Debug("イベントコマンド生成成功");

            commandList.Add(eventCommand);
        }