docs: public ClassInfoList getClassesImplementing() {
          if (!isInterface) {
              throw new IllegalArgumentException("Class is not an interface: " + getName());
          }
          // Subclasses of implementing classes also implement the interface
          final ReachableAndDirectlyRelatedClasses implementingClasses = this
                  .filterClassInfo(RelType.CLASSES_IMPLEMENTING, /* strictWhitelist = */ !isExternalClass);
          final Set<ClassInfo> allImplementingClasses = new LinkedHashSet<>(implementingClasses.reachableClasses);
          for (final ClassInfo implementingClass : implementingClasses.reachableClasses) {
              final Set<ClassInfo> implementingSubclasses = implementingClass.filterClassInfo(RelType.SUBCLASSES,
                      /* strictWhitelist = */ !implementingClass.isExternalClass).reachableClasses;
              allImplementingClasses.addAll(implementingSubclasses);
          }
          return new ClassInfoList(allImplementingClasses, implementingClasses.directlyRelatedClasses,
                  /* sortByName = */ true);
      }