protected void doReflect()
{
// ensure master type is reflected
Type master = m_base;
master.finish();
List masterSlots = master.slots();
// allocate slot data structures
m_fields = new List(Sys.FieldType, master.fields().sz());
m_methods = new List(Sys.MethodType, master.methods().sz());
m_slots = new List(Sys.SlotType, masterSlots.sz());
m_slotsByName = new Hashtable(masterSlots.sz() * 3);
// parameterize master's slots
for (int i = 0; i < masterSlots.sz(); i++)
{
Slot slot = (Slot)masterSlots.get(i);
if (slot is Method)
{
slot = parameterize((Method)slot);
m_methods.add(slot);
}
else
{
slot = parameterize((Field)slot);
m_fields.add(slot);
}
m_slots.add(slot);
m_slotsByName[slot.m_name] = slot;
}
}