code: private void processType(TypeElement typeElement, Configuration configuration,
              Collection<TypeElement> bases, Map<TypeElement, SortedSet<TypeElement>> subs) {
          TypeElement superclass = utils.getFirstVisibleSuperClassAsTypeElement(typeElement);
          if (superclass != null) {
              if (!add(subs, superclass, typeElement)) {
                  return;
              } else {
                  processType(superclass, configuration, bases, subs);
              }
          } else {     // typeElement is java.lang.Object, add it once to the set
              if (!bases.contains(typeElement)) {
                  bases.add(typeElement);
              }
          }
          Set<TypeMirror> intfacs = utils.getAllInterfaces(typeElement);
          for (TypeMirror intfac : intfacs) {
              add(implementingClasses, utils.asTypeElement(intfac), typeElement);
          }
      }
docs: For the class passed map it to its own sub-class listing.
  For the Class passed, get the super class,
  if superclass is non null, (it is not "java.lang.Object")
  get the "value" from the hashmap for this key Class
  if entry not found create one and get that.
  add this Class as a sub class in the set
  Recurse till hits java.lang.Object Null SuperClass.
  
  @param typeElement for which sub class mapping is to be generated.
  @param configuration the current configuration of the doclet.