private void CopyStats(Dictionary <string, NetworkStat> from, List <Tuple <string, NetworkStat> > to)
        {
            try
            {
                foreach (var stat in from)
                {
                    m_helper.Add(stat.Key, stat.Value);
                }

                foreach (var item in to) // Copy existing stats
                {
                    NetworkStat stat;
                    if (m_helper.TryGetValue(item.Item1, out stat))
                    {
                        m_helper.Remove(item.Item1);
                        item.Item2.MessageCount       = stat.MessageCount;
                        item.Item2.TotalSize          = stat.TotalSize;
                        item.Item2.UniqueMessageCount = stat.UniqueMessageCount;
                        item.Item2.IsReliable         = stat.IsReliable;
                        stat.Clear();
                    }
                }

                foreach (var stat in m_helper) // Copy newly added stats
                {
                    NetworkStat myStat = new NetworkStat();
                    to.Add(new Tuple <string, NetworkStat>(stat.Key, myStat));
                    myStat.MessageCount       = stat.Value.MessageCount;
                    myStat.TotalSize          = stat.Value.TotalSize;
                    myStat.UniqueMessageCount = stat.Value.UniqueMessageCount;
                    myStat.IsReliable         = stat.Value.IsReliable;
                    stat.Value.Clear();
                }
            }
            finally
            {
                m_helper.Clear();
            }
        }
        private void CopyStats(Dictionary<string, NetworkStat> from, List<Tuple<string, NetworkStat>> to)
        {
            try
            {
                foreach (var stat in from)
                {
                    m_helper.Add(stat.Key, stat.Value);
                }

                foreach (var item in to) // Copy existing stats
                {
                    NetworkStat stat;
                    if (m_helper.TryGetValue(item.Item1, out stat))
                    {
                        m_helper.Remove(item.Item1);
                        item.Item2.MessageCount = stat.MessageCount;
                        item.Item2.TotalSize = stat.TotalSize;
                        item.Item2.UniqueMessageCount = stat.UniqueMessageCount;
                        item.Item2.IsReliable = stat.IsReliable;
                        stat.Clear();
                    }
                }

                foreach (var stat in m_helper) // Copy newly added stats
                {
                    NetworkStat myStat = new NetworkStat();
                    to.Add(new Tuple<string, NetworkStat>(stat.Key, myStat));
                    myStat.MessageCount = stat.Value.MessageCount;
                    myStat.TotalSize = stat.Value.TotalSize;
                    myStat.UniqueMessageCount = stat.Value.UniqueMessageCount;
                    myStat.IsReliable = stat.Value.IsReliable;
                    stat.Value.Clear();
                }
            }
            finally
            {
                m_helper.Clear();
            }
        }