code: public static <T> T buildApplicationObject(Class<T> interfaceClass,
                                                 Collection<String> classNamesIterator, T defaultObject, FacesConfigurator config)
      {
          return buildApplicationObject(interfaceClass, null, null, classNamesIterator, defaultObject, config);
      }
docs: Creates ApplicationObjects like NavigationHandler or StateManager and creates
  the right wrapping chain of the ApplicationObjects known as the decorator pattern.
  
  @param <T>
  @param interfaceClass The class from which the implementation has to inherit from.
  @param classNamesIterator All the class names of the actual ApplicationObject implementations
  from the faces-config.xml.
  @param defaultObject The default implementation for the given ApplicationObject.
  @Param FacesConfig  The object which will be used for InjectAndPostConstruct. Added for CDI 1.2 support
  @return