public static string GetLatestEvents()
            {
                Stack <string> eventLog;

                if (!ComponentStateManager.TryGetState(EventLogSessionKey, out eventLog))
                {
                    eventLog = new Stack <string>();
                }

                var sb = new StringBuilder("<pre>");

                if (eventLog.Count == 0)
                {
                    sb.AppendLine("No events.");
                }
                else
                {
                    while (eventLog.Count > 0)
                    {
                        sb.AppendLine(eventLog.Pop());
                    }
                }
                sb.AppendLine("</pre>");

                return(sb.ToString());
            }
            public static void SaveEventInfo(Dictionary <string, object> eventInfo)
            {
                var now            = DateTime.Now.ToString("T");
                var json           = ComponentStateManager.SerializeState(eventInfo, true);
                var formattedValue = "[" + now + "]" + "\nEvent arguments: " + json + "\n\n";

                Stack <string> eventLog;

                if (!ComponentStateManager.TryGetState(EventLogSessionKey, out eventLog))
                {
                    eventLog = new Stack <string>();
                }

                if (eventLog.Count > 50)
                {
                    eventLog.Clear();
                }

                eventLog.Push(formattedValue);
                ComponentStateManager.SaveState(EventLogSessionKey, eventLog);
            }