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; } }