+ private void process(FieldRef fr) throws ClassNotFoundException {
+ if(completed.get(fr) != null) return;
+ completed.put(fr,Boolean.TRUE);
+
+ JavaClass c = repoGet(fr.c.toString());
+ Field f = findField(c,fr);
+ if(f == null) {
+ JavaClass supers[] = c.getSuperClasses();
+ for(int i=0;i<supers.length;i++) {
+ f = findField(supers[i],fr);
+ if(f != null) { referenceField(new FieldRef(supers[i],f)); return; }
+ }
+ String sig = fr.toString();
+ for(int i=0;i<IGNORED_FIELDS.length;i++) {
+ String pat = IGNORED_FIELDS[i];
+ if(pat.endsWith("*") ? sig.startsWith(pat.substring(0,pat.length()-1)) : sig.equals(pat)) return;
+ }
+ throw new ClassNotFoundException("" + fr + " not found (but the class was)");
+ }
+ /* nothing to do */
+ }
+