void DrawPackageStatistics()
    {
        float x       = Overlay.Managed.CellsWide - 20;
        float y       = Overlay.Managed.CellsTall - 8;
        float dx      = 1.0f; // bar spacing
        float w       = 1.0f; // width of bars
        int   maxbits = 0;
        var   stats   = m_NetworkClient.counters.packageContentStats;
        var   last    = m_NetworkClient.counters.packagesIn;

        for (var i = last; i > 0 && i > last - stats.Length; --i)
        {
            var s = stats[i % stats.Length];
            if (s == null)
            {
                continue;
            }
            var barx = x + (i - last) * dx;

            for (int j = 0, c = s.Count; j < c; ++j)
            {
                var stat = s[j];
                DebugOverlay.DrawRect(barx, y - (stat.sectionStart + stat.sectionLength) * bitheight, w, stat.sectionLength * bitheight, stat.color);
            }

            var lastStat = s[s.Count - 1];
            if (lastStat.sectionStart + lastStat.sectionLength > maxbits)
            {
                maxbits = lastStat.sectionStart + lastStat.sectionLength;
            }
        }

        int maxbytes = (maxbits + 7) / 8;
        int step     = Mathf.Max(1, maxbytes >> 4) * 16;

        for (var i = 0; i <= maxbytes; i += step)
        {
            Overlay.Managed.Write((int)(x - 4), (int)(y - i * 8 * bitheight - 0.5f), "{0:###}b", i);
        }

        bitheight = Mathf.Min(0.01f, 10.0f / maxbits);
    }