private void processType(ClassDoc cd, Configuration configuration,
            List bases, Map subs) {
        ClassDoc superclass = Util.getFirstVisibleSuperClassCD(cd, configuration);
        if (superclass != null) {
            if (!add(subs, superclass, cd)) {
                return;
            } else {
                processType(superclass, configuration, bases, subs);
            }
        } else {     // cd is java.lang.Object, add it once to the list
            if (!bases.contains(cd)) {
                bases.add(cd);
            }
        }
        List intfacs = Util.getAllInterfaces(cd, configuration);
        for (Iterator iter = intfacs.iterator(); iter.hasNext();) {
            add(implementingclasses, ((Type) iter.next()).asClassDoc(), cd);
        }
    }