code: private Collection<ClassDoc> implementingClasses(ClassDoc cd) {
          Collection<ClassDoc> ret = classToImplementingClass.get(cd.qualifiedName());
          if (ret == null) {
              ret = new TreeSet<>(utils.makeComparatorForClassUse());
              SortedSet<ClassDoc> impl = classtree.implementingclasses(cd);
              if (impl != null) {
                  ret.addAll(impl);
                  for (ClassDoc anImpl : impl) {
                      ret.addAll(subclasses(anImpl));
                  }
              }
              for (ClassDoc doc : subinterfaces(cd)) {
                  ret.addAll(implementingClasses(doc));
              }
              addAll(classToImplementingClass, cd, ret);
          }
          return ret;
      }
docs: Return all implementing classes of an interface (including
  all subclasses of implementing classes and all classes
  implementing subinterfaces) AND fill-in both classToImplementingClass
  and classToSubinterface maps.