code: @SuppressWarnings("unchecked")
      public static <T> T buildApplicationObject(Class<T> interfaceClass, Class<? extends T> extendedInterfaceClass,
                                                 Class<? extends T> extendedInterfaceWrapperClass,
                                                 Collection<String> classNamesIterator, T defaultObject)
      {
          return buildApplicationObject(interfaceClass, extendedInterfaceClass, extendedInterfaceWrapperClass, classNamesIterator, defaultObject, null);
  
      }
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 extendedInterfaceClass A subclass of interfaceClass which specifies a more
  detailed implementation.
  @param extendedInterfaceWrapperClass A wrapper class for the case that you have an ApplicationObject
  which only implements the interfaceClass but not the
  extendedInterfaceClass.
  @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.
  @return