public static void GetMostExpensiveCalls(TextWriter wrt, MethodCallRecord R, int cnt = 0)
        {
            int i             = 1;
            var mostExpensive = R.CompleteCollectiveReport().OrderByDescending(cr => cr.ExclusiveTicks);

            foreach (var cr in mostExpensive)
            {
                wrt.Write("Rank " + i + ": ");
                wrt.WriteLine(cr.ToString());
                if (i == cnt)
                {
                    return;
                }
                i++;
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="wrt"></param>
        /// <param name="R"></param>
        /// <param name="printcnt"></param>
        private static void GetMostExpensiveBlocking(TextWriter wrt, MethodCallRecord R, int printcnt = 0)
        {
            int i             = 1;
            var mostExpensive = R.CompleteCollectiveReport().OrderByDescending(cr => cr.TicksSpentInBlocking);

            foreach (var kv in mostExpensive)
            {
                wrt.Write("#" + i + ": ");
                wrt.WriteLine(string.Format(
                                  "'{0}': {1} calls, {2:0.##E-00} sec. runtime exclusivesec",
                                  kv.Name,
                                  kv.CallCount,
                                  new TimeSpan(kv.TicksSpentInBlocking).TotalSeconds));
                if (i == printcnt)
                {
                    return;
                }
                i++;
            }
            Console.Out.Flush();
        }