public DeveloperLogEvent Clone()
        {
            var clone = (DeveloperLogEvent)MemberwiseClone();

            clone.GrpcErrorDetails               = GrpcErrorDetails?.Clone();
            clone.ExternalToolError              = ExternalToolError?.Clone();
            clone.CommandData                    = CommandData?.Clone();
            clone.GameletData                    = GameletData?.Clone();
            clone.GrpcCallDetails                = GrpcCallDetails?.Select(x => x.Clone()).ToList();
            clone.LoadSymbolData                 = LoadSymbolData?.Clone();
            clone.DebugPreflightCheckData        = DebugPreflightCheckData?.Clone();
            clone.DebugSessionEndData            = DebugSessionEndData?.Clone();
            clone.DebugEventBatch                = DebugEventBatch?.Clone();
            clone.DebugParameters                = DebugParameters?.Clone();
            clone.CopyExecutable                 = CopyExecutable?.Clone();
            clone.CopyLldbServer                 = CopyLldbServer?.Clone();
            clone.CustomCommand                  = CustomCommand?.Clone();
            clone.ExceptionsData                 = ExceptionsData?.Select(x => x.Clone()).ToList();
            clone.BoundBreakpointsData           = BoundBreakpointsData?.Clone();
            clone.GameLaunchData                 = GameLaunchData?.Clone();
            clone.DebugExpressionEvaluationBatch = DebugExpressionEvaluationBatch?.Clone();
            return(clone);
        }
        public bool Load(string fileName)
        {
            if (File.Exists(fileName) == false) return false;
            bool bSuccess = false;

            XmlReaderSettings settings = new XmlReaderSettings();
            using (var reader = XmlReader.Create(fileName, settings))
            {
                TaskData task = new TaskData();
                CommandData command = new CommandData();
                bool bTaskData = false;
                bool bCommandData = false;
                bool bOptionData = false;
                while (reader.Read())
                {
                    if (reader.NodeType == XmlNodeType.Element)
                    {
                        if (reader.Name == "TaskData")
                        {
                            bTaskData = true;
                        }
                        if (reader.Name == "CommandData")
                        {
                            bCommandData = true;
                        }
                        if (reader.Name == "OptionData")
                        {
                            bOptionData = true;
                        }
                        if (bCommandData)
                        {
                            command.XmlReader(reader);
                        }
                        else if (bTaskData)
                        {
                            task.XmlReader(reader);
                        }
                        else if (bOptionData)
                        {
                            //一旦仮バッファにいれるべきか?
                            OptionData.GetInstance().XmlReader(reader);
                        }
                    }
                    else if (reader.NodeType == XmlNodeType.EndElement)
                    {
                        if (reader.Name == "TaskData")
                        {
                            this.SaveData.TaskList.Add((TaskData)task.Clone());
                            //初期化。コンストラクタと同一化するのがベター
                            task.CommandDataList.Clear();
                            bTaskData = false;
                        }
                        if (reader.Name == "CommandData")
                        {
                            task.CommandDataList.Add((CommandData)command.Clone());
                            bCommandData = false;
                        }
                    }
                }
            }
            bSuccess = true;
            return bSuccess;
        }