void ReadTypeSpecs()
        {
            if (!m_tHeap.HasTable(TypeSpecTable.RId))
            {
                return;
            }

            TypeSpecTable tsTable = m_tableReader.GetTypeSpecTable();

            m_typeSpecs = new TypeReference [tsTable.Rows.Count];
        }
        public TypeReference GetTypeSpecAt(uint rid, GenericContext context)
        {
            int           index = (int)rid - 1;
            TypeReference tspec = m_typeSpecs [index];

            if (tspec != null)
            {
                return(tspec);
            }

            TypeSpecTable tsTable = m_tableReader.GetTypeSpecTable();
            TypeSpecRow   tsRow   = tsTable [index];
            TypeSpec      ts      = m_sigReader.GetTypeSpec(tsRow.Signature);

            tspec = GetTypeRefFromSig(ts.Type, context);
            tspec.MetadataToken = MetadataToken.FromMetadataRow(TokenType.TypeSpec, index);
            m_typeSpecs [index] = tspec;

            return(tspec);
        }