docs: public static Object getFactory(String factoryName) throws FacesException
      {
          if (factoryName == null)
          {
              throw new NullPointerException("factoryName may not be null");
          }
          
          initializeFactoryFinderProviderFactory();
          
          if (factoryFinderProviderFactoryInstance == null)
          {
              // Do the typical stuff
              return _getFactory(factoryName);
          }
          else
          {
              try
              {
                  //Obtain the FactoryFinderProvider instance for this context.
                  Object ffp = _FactoryFinderProviderFactory
                          .FACTORY_FINDER_PROVIDER_FACTORY_GET_FACTORY_FINDER_METHOD
                          .invoke(factoryFinderProviderFactoryInstance, null);
                  
                  //Call getFactory method and pass the params
                  return _FactoryFinderProviderFactory
                          .FACTORY_FINDER_PROVIDER_GET_FACTORY_METHOD.invoke(ffp, factoryName);
              }
              catch (InvocationTargetException e)
              {
                  Throwable targetException = e.getCause();
                  if (targetException instanceof NullPointerException)
                  {
                      throw (NullPointerException) targetException;
                  }
                  else if (targetException instanceof FacesException)
                  {
                      throw (FacesException) targetException;
                  }
                  else if (targetException instanceof IllegalArgumentException)
                  {
                      throw (IllegalArgumentException) targetException;
                  }
                  else if (targetException instanceof IllegalStateException)
                  {
                      throw (IllegalStateException) targetException;
                  }
                  else if (targetException == null)
                  {
                      throw new FacesException(e);
                  }
                  else
                  {
                      throw new FacesException(targetException);
                  }
              }
              catch (Exception e)
              {
                  //No Op
                  throw new FacesException(e);
              }
          }
      }