code: public void traverseSupertypesDepthFirst(ClassDescriptor start, SupertypeTraversalVisitor visitor) throws ClassNotFoundException {
          this.traverseSupertypesDepthFirstHelper(start, visitor, new HashSet<ClassDescriptor>());
      }
docs: Starting at the class or interface named by the given ClassDescriptor,
  traverse the inheritance graph depth first, visiting each class only
  once. This is much faster than traversing all paths in certain circumstances.
  
  @param start
  ClassDescriptor naming the class where the traversal should
  start
  @param visitor
  an InheritanceGraphVisitor
  @throws ClassNotFoundException
  if the start vertex cannot be resolved