ent.setValue(((BoundCall) ent.getValue()).bind(ctype));
String nonGenSig = (String) ent.getKey(); BoundCall call = (BoundCall) ent.getValue(); if (!call.getNonGenericSig().equals(nonGenSig)) throw new RuntimeException("unmatched sigs: " + nonGenSig + ", " + call.getNonGenericSig()); BoundCall boundCall = call.bind(ctype); if (boundCall.getExclude14() && !call.getExclude14()) { callMap.put(nonGenSig, call.bind14()); } callMap.put(boundCall.getNonGenericSig(), boundCall);
  private static void getFieldsAndCalls(ClassWrapper outer, ClassType ctype, Map fieldMap, Map callMap) {    ClassWrapper c = (ctype == null) ? outer : ctype.getWrapper();    ClassType[] ifaces = c.getInterfaces();    for (int i = 0; i < ifaces.length; i++) {      ClassType iface = ifaces[i];      if (ctype != null) iface = (ClassType) iface.bind(ctype);      getFieldsAndCalls(outer, iface, fieldMap, callMap);    }    ClassType sup = c.getSuperclass();    if (sup != null) {      if (ctype != null) sup = (ClassType) sup.bind(ctype);      getFieldsAndCalls(outer, sup, fieldMap, callMap);    }    FieldWrapper[] fields = c.getFields();    for (int i = 0; i < fields.length; i++) {      fieldMap.put(fields[i].getName(), new BoundField(fields[i]));    }    CallWrapper[] calls = c.getCalls();    for (int i = 0; i < calls.length; i++) {      // JDK15: skip bridge methods (the ACC_VOLATILE bit corresponds to the ACC_BRIDGE bit)      if (Modifier.isVolatile(calls[i].getModifiers())) continue;      BoundCall call = new BoundCall(calls[i], outer);      if (ctype == null || call.isInheritable()) {        callMap.put(call.getNonGenericSig(), call);      }    }    if (ctype != null) {      for (Iterator i = fieldMap.entrySet().iterator(); i.hasNext(); ) {        Map.Entry ent = (Map.Entry) i.next();        ent.setValue(((BoundField) ent.getValue()).bind(ctype));      }      for (Iterator i = callMap.entrySet().iterator(); i.hasNext(); ) {        Map.Entry ent = (Map.Entry) i.next();        ent.setValue(((BoundCall) ent.getValue()).bind(ctype));      }    }  }