code: public ClassModel getOrUpdateAllClassAccesses(String className) throws AparapiException {
        ClassModel memberClassModel = allFieldsClasses.get(className);
        if (memberClassModel == null) {
           try {
              final Class<?> memberClass = Class.forName(className);
  
              // Immediately add this class and all its supers if necessary
              memberClassModel = ClassModel.createClassModel(memberClass);
              if (logger.isLoggable(Level.FINEST)) {
                 logger.finest("adding class " + className);
              }
              allFieldsClasses.put(className, memberClassModel);
              ClassModel superModel = memberClassModel.getSuperClazz();
              while (superModel != null) {
                 // See if super is already added
                 final ClassModel oldSuper = allFieldsClasses.get(superModel.getClassWeAreModelling().getName());
                 if (oldSuper != null) {
                    if (oldSuper != superModel) {
                       memberClassModel.replaceSuperClazz(oldSuper);
                       if (logger.isLoggable(Level.FINEST)) {
                          logger.finest("replaced super " + oldSuper.getClassWeAreModelling().getName() + " for " + className);
                       }
                    }
                 } else {
                    allFieldsClasses.put(superModel.getClassWeAreModelling().getName(), superModel);
                    if (logger.isLoggable(Level.FINEST)) {
                       logger.finest("add new super " + superModel.getClassWeAreModelling().getName() + " for " + className);
                    }
                 }
  
                 superModel = superModel.getSuperClazz();
              }
           } catch (final Exception e) {
              if (logger.isLoggable(Level.INFO)) {
                 logger.info("Cannot find: " + className);
              }
              throw new AparapiException(e);
           }
        }
  
        return memberClassModel;
     }
docs: /*
  Update the list of object array member classes and all the superclasses
  of those classes and the fields in each class
  
  It is important to have only one ClassModel for each class used in the kernel
  and only one MethodModel per method, so comparison operations work properly.