code: public static Class classForName(String type)
          throws ClassNotFoundException
      {
          //we now assign the array to safekeep the reference on
          // the local variable stack, that way
          //we can avoid synchronisation calls
          ClassLoaderExtension [] loaderPlugins = classLoadingExtensions;
  
          int plugins = loaderPlugins.length;
          for(int cnt = 0; cnt < loaderPlugins.length; cnt ++)
          {
              ClassLoaderExtension extension = loaderPlugins[cnt];
              Class retVal = extension.forName(type);
              if(retVal != null)
              {
                  return retVal;
              }
          }
  
  
          if (type == null)
          {
              throw new NullPointerException("type");
          }
          try
          {
              // Try WebApp ClassLoader first
              return Class.forName(type,
                                   false, // do not initialize for faster startup
                                   getContextClassLoader());
          }
          catch (ClassNotFoundException ignore)
          {
              // fallback: Try ClassLoader for ClassUtils (i.e. the myfaces.jar lib)
              return Class.forName(type,
                                   false, // do not initialize for faster startup
                                   ClassUtils.class.getClassLoader());
          }
      }
docs: Tries a Class.loadClass with the context class loader of the current thread first and
  automatically falls back to the ClassUtils class loader (i.e. the loader of the
  myfaces.jar lib) if necessary.
  
  @param type fully qualified name of a non-primitive non-array class
  @return the corresponding Class
  @throws NullPointerException if type is null
  @throws ClassNotFoundException