code: public Class<? extends T> resolveClass(final String aliasOrClassName) throws ClassNotFoundException {
      if (this.aliasToClassCache.containsKey(aliasOrClassName.toUpperCase())) {
        return this.aliasToClassCache.get(aliasOrClassName.toUpperCase());
      }
      try {
        return Class.forName(aliasOrClassName).asSubclass(this.subtypeOf);
      } catch (ClassCastException cce) {
        throw new ClassNotFoundException(
            String.format("Found class %s but it cannot be cast to %s.", aliasOrClassName, this.subtypeOf.getName()), cce);
      }
    }
docs: Attempts to resolve the given alias to a class. It first tries to find a class in the classpath with this alias
  and is also a subclass of {@link #subtypeOf}, if it fails it returns a class object for name
  <code>aliasOrClassName</code>.