code: private static Set<Class<?>> describeClassTree(Class<?> inputClass) {
      if(inputClass == null) {
        return Collections.emptySet();
      }
  
      // create result collector
      Set<Class<?>> classes = Sets.newLinkedHashSet();
  
      // describe tree
      describeClassTree(inputClass, classes);
  
      return classes;
    }
docs: Given an object return the set of classes that it extends
  or implements.
  
  @param inputClass object to describe
  @return set of classes that are implemented or extended by that object