/*     */ private C loadObjectFactory(ClassInfoImpl<T, C, F, M> ci, String pkg) {
   /*     */ try {
     /* 269 */ return this.nav.findClass(pkg + ".ObjectFactory", ci.getClazz());
     /*     */ } catch (SecurityException ignored) {
     /*     */ }
   /* 272 */ return null;
   /*     */ }
 /*     */ public TypeInfoSet<T, C, F, M> link() /*     */ {
   /* 385 */ assert (!this.linked);
   /* 386 */ this.linked = true;
   /*     */
   /* 388 */ for (ElementInfoImpl ei : this.typeInfoSet.getAllElements()) {
     /* 389 */ ei.link();
     /*     */ }
   /* 391 */ for (ClassInfoImpl ci : this.typeInfoSet.beans().values()) {
     /* 392 */ ci.link();
     /*     */ }
   /* 394 */ for (EnumLeafInfoImpl li : this.typeInfoSet.enums().values()) {
     /* 395 */ li.link();
     /*     */ }
   /* 397 */ if (this.hadError) {
     /* 398 */ return null;
     /*     */ }
   /* 400 */ return this.typeInfoSet;
   /*     */ }
 /*     */ public NonElement<T, C> getClassInfo(
     C clazz, boolean searchForSuperClass, Locatable upstream)
       /*     */ {
   /* 207 */ assert (clazz != null);
   /* 208 */ NonElement r = this.typeInfoSet.getClassInfo(clazz);
   /* 209 */ if (r != null) {
     /* 210 */ return r;
     /*     */ }
   /* 212 */ if (this.nav.isEnum(clazz)) {
     /* 213 */ EnumLeafInfoImpl li = createEnumLeafInfo(clazz, upstream);
     /* 214 */ this.typeInfoSet.add(li);
     /* 215 */ r = li;
     /* 216 */ addTypeName(r);
     /*     */ } else {
     /* 218 */ boolean isReplaced = this.subclassReplacements.containsKey(clazz);
     /* 219 */ if ((isReplaced) && (!searchForSuperClass))
     /*     */ {
       /* 221 */ r = getClassInfo(this.subclassReplacements.get(clazz), upstream);
       /*     */ }
     /* 223 */ else if ((this.reader.hasClassAnnotation(clazz, XmlTransient.class))
         || (isReplaced))
     /*     */ {
       /* 225 */ r =
           getClassInfo(
               this.nav.getSuperClass(clazz),
               searchForSuperClass,
               new ClassLocatable(upstream, clazz, this.nav));
       /*     */ }
     /*     */ else {
       /* 228 */ ClassInfoImpl ci = createClassInfo(clazz, upstream);
       /* 229 */ this.typeInfoSet.add(ci);
       /*     */
       /* 232 */ for (PropertyInfo p : ci.getProperties()) {
         /* 233 */ if (p.kind() == PropertyKind.REFERENCE)
         /*     */ {
           /* 235 */ String pkg = this.nav.getPackageName(ci.getClazz());
           /* 236 */ if (!this.registries.containsKey(pkg))
           /*     */ {
             /* 238 */ Object c = loadObjectFactory(ci, pkg);
             /* 239 */ if (c != null) {
               /* 240 */ addRegistry(c, (Locatable) p);
               /*     */ }
             /*     */ }
           /*     */ }
         /* 244 */ for (Iterator i$ = p.ref().iterator(); i$.hasNext(); t = (TypeInfo) i$.next()) ;
         /*     */ }
       /*     */ TypeInfo t;
       /* 247 */ ci.getBaseClass();
       /*     */
       /* 249 */ r = ci;
       /* 250 */ addTypeName(r);
       /*     */ }
     /*     */
     /*     */ }
   /*     */
   /* 256 */ XmlSeeAlso sa =
       (XmlSeeAlso) this.reader.getClassAnnotation(XmlSeeAlso.class, clazz, upstream);
   /* 257 */ if (sa != null) {
     /* 258 */ for (Object t : this.reader.getClassArrayValue(sa, "value")) {
       /* 259 */ getTypeInfo(t, (Locatable) sa);
       /*     */ }
     /*     */
     /*     */ }
   /*     */
   /* 264 */ return r;
   /*     */ }