docs: @Deprecated
  	public <T> List<T> getImplementors (AddOn ao, String packageName, Class<T> classType) {
          Class<?> cls = null;
          List<T> listClass = new ArrayList<>();
          
          List<ClassNameWrapper> classNames;
          if (ao != null) {
          	classNames = this.getJarClassNames(ao, packageName);
          } else {
          	classNames = this.getClassNames(packageName, classType);
          }
          for (ClassNameWrapper classWrapper : classNames) {
              try {
                  cls = classWrapper.getCl().loadClass(classWrapper.getClassName());
                  // abstract class or interface cannot be constructed.
                  if (Modifier.isAbstract(cls.getModifiers()) || Modifier.isInterface(cls.getModifiers())) {
                      continue;
                  }
                  if (classType.isAssignableFrom(cls)) {
                      @SuppressWarnings("unchecked")
                      Constructor<T> c = (Constructor<T>) cls.getConstructor();
                      listClass.add(c.newInstance());
  
                  }
              } catch (Throwable e) {
              	// Often not an error
              	logger.debug(e.getMessage(), e);
              }
          }
          return listClass;
  	}