} catch (ReflectiveOperationException roe) {
throw new RuntimeException(roe);
}
adaptorUnit.initializeCompilationUnit(tc);
SixModelObject hash = gc.BOOTHash.st.REPR.allocate(tc, gc.BOOTHash.st);
HashMap<String, SixModelObject> names = new HashMap< >();
for (int i = 0; i < adaptor.descriptors.size(); i++) {
String desc = adaptor.descriptors.get(i);
SixModelObject cr = adaptorUnit.lookupCodeRef(i);
int s1 = desc.indexOf('/');
int s2 = desc.indexOf('/', s1+1);
String shorten = desc.substring(s1+1, s2);
names.put(shorten, names.containsKey(shorten) ? null : cr);
names.put(desc, cr);
}
for (Iterator<Map.Entry<String, SixModelObject>> it = names.entrySet().iterator(); it.hasNext(); ) {
Map.Entry<String, SixModelObject> ent = it.next();
if (ent.getValue() != null)
hash.bind_key_boxed(tc, ent.getKey(), ent.getValue());
else
it.remove();
}
STable protoSt = gc.BOOTJava.st;
SixModelObject freshType = protoSt.REPR.type_object_for(tc, computeHOW(tc, klass.getName()));
freshType.st.MethodCache = names;
freshType.st.ModeFlags |= STable.METHOD_CACHE_AUTHORITATIVE;
hash.bind_key_boxed(tc, "/TYPE/", freshType);