private MethodtoJson TransformMethodInfo(MethodTrace methodTrace)
        {
            MethodtoJson mth = new MethodtoJson();

            mth.name      = methodTrace.name;
            mth.classname = methodTrace.classname;
            mth.time      = methodTrace.time;
            mth.methods   = new List <MethodtoJson>();
            foreach (MethodTrace nestedMethodTrace in methodTrace._nestedStack)
            {
                MethodtoJson nestedmth = TransformMethodInfo(nestedMethodTrace);
                if (nestedmth != null)
                {
                    mth.methods.Add(nestedmth);
                }
            }
            return(mth);
        }
        public string Serialize(TraceResult traceResult)
        {
            JSONFile jsfile = new JSONFile();

            jsfile.threads = new List <ThreadstoJson>();
            foreach (KeyValuePair <int, ThreadInfo> threadInfo in traceResult._threadList)
            {
                ThreadstoJson threadjs = new ThreadstoJson();
                threadjs.id      = threadInfo.Key;
                threadjs.time    = threadInfo.Value._thread_time;
                threadjs.methods = new List <MethodtoJson>();
                foreach (MethodTrace tracedMethod in threadInfo.Value._methods)
                {
                    MethodtoJson mth = TransformMethodInfo(tracedMethod);
                    threadjs.methods.Add(mth);
                }
                jsfile.threads.Add(threadjs);
            }
            return(JSONConfig(jsfile));
        }