private void DeoptimizeTable <T>(MetadataTable <T> table, MetadataPtrTable ptrTable)
            where T : struct
        {
            int count = table.Count;

            if (count == 0)
            {
                return;
            }

            ptrTable.Capacity = count;

            for (int i = 0; i < count; i++)
            {
                ptrTable.Add(i + 1);
            }
        }
        private void OptimizeTable <T>(MetadataTable <T> table, MetadataPtrTable ptrTable)
            where T : struct
        {
            int count = table.Count;

            if (count == 0)
            {
                return;
            }

            if (ptrTable.Count == 0)
            {
                return;
            }

            int[] rids = new int[count];
            for (int i = 0; i < count; i++)
            {
                rids[i] = ptrTable.Get(i + 1);
            }

            table.Map(rids);
            ptrTable.Clear();
        }