code: public Set<ClassInfo> getAllKnownImplementors(final DotName interfaceName) {
          final Set<ClassInfo> allKnown = new HashSet<ClassInfo>();
          final Set<DotName> subInterfacesToProcess = new HashSet<DotName>();
          final Set<DotName> processedClasses = new HashSet<DotName>();
          subInterfacesToProcess.add(interfaceName);
          while (!subInterfacesToProcess.isEmpty()) {
              final Iterator<DotName> toProcess = subInterfacesToProcess.iterator();
              DotName name = toProcess.next();
              toProcess.remove();
              processedClasses.add(name);
              getKnownImplementors(name, allKnown, subInterfacesToProcess, processedClasses);
          }
          return allKnown;
      }
docs: Returns all known classes that implement the given interface, directly and indirectly. This will all return classes that
  implement sub interfaces of the interface, and sub classes of classes that implement the interface. (In short, it will
  return every class that is assignable to the interface that is found in the index)
  <p/>
  This will only return classes, not interfaces.
  
  @param interfaceName The interface
  @return All known implementors of the interface