code: @Override
      protected Object getTreeStructureToSave(FacesContext facesContext)
      {
          if (log.isLoggable(Level.FINEST))
          {
              log.finest("Entering getTreeStructureToSave");
          }
          UIViewRoot viewRoot = facesContext.getViewRoot();
          if (viewRoot.isTransient())
          {
              return null;
          }
          TreeStructureManager tsm = new TreeStructureManager();
          Object retVal = tsm.buildTreeStructureToSave(viewRoot);
          if (log.isLoggable(Level.FINEST))
          {
              log.finest("Exiting getTreeStructureToSave");
          }
          return retVal;
      }
docs: Return an object which contains info about the UIComponent type
  of each node in the view tree. This allows an identical UIComponent
  tree to be recreated later, though all the components will have
  just default values for their members.