public void Write(string actionTypeName, IList <StoreItem> states)
        {
            var stateNames = states.Select(s => s.State.OriginalTypeName.Split('.').Last()).Aggregate((a, b) => $"{a}, {b}");
            var message    = TraceMessageSerializer.Serialize(new TraceMessage
            {
                StoreTypeName  = stateNames,
                ActionTypeName = actionTypeName,
                StateValueJson = ConvertToStateValueJson(states)
            });

            Trace.WriteLine(message);
        }
        private void onPaneUpdated(OutputWindowPane pane)
        {
            ThreadHelper.ThrowIfNotOnUIThread();

            if (pane.Name == TargetPaneName)
            {
                var lastLines = _parser.GetLastLines(pane.TextDocument);
                foreach (var line in lastLines)
                {
                    if (!string.IsNullOrWhiteSpace(line) && line.StartsWith(MonitorConstants.Message.Tag))
                    {
                        var message = TraceMessageSerializer.Deserialize(line.TrimEnd());
                        if (message != null)
                        {
                            HandleUpdate?.Invoke(message);
                        }
                    }
                }
            }
        }