code: public void apply(FaceletContext ctx, UIComponent parent) throws IOException, FacesException, FaceletException,
              ELException
      {
          if (_template != null)
          {
              //VariableMapper orig = ctx.getVariableMapper();
              //if (_params != null)
              //{
              //    VariableMapper vm = new VariableMapperWrapper(orig);
              //    ctx.setVariableMapper(vm);
              //    for (int i = 0; i < _params.length; i++)
              //    {
              //        _params[i].apply(ctx, parent);
              //    }
              //}
              AbstractFaceletContext actx = (AbstractFaceletContext) ctx;
              FaceletCompositionContext fcc = FaceletCompositionContext.getCurrentInstance(ctx);
              actx.extendClient(this);
              if (_params != null)
              {
                  String uniqueId = fcc.generateUniqueComponentId();
                  //VariableMapper vm = new VariableMapperWrapper(orig);
                  //ctx.setVariableMapper(vm);
                  for (int i = 0; i < _params.length; i++)
                  {
                      _params[i].apply(ctx, parent, _params[i].getName(ctx), _params[i].getValue(ctx), uniqueId);
                  }
              }
  
              try
              {
                  ctx.includeFacelet(parent, _template.getValue(ctx));
              }
              finally
              {
                  actx.popExtendedClient(this);
                  //ctx.setVariableMapper(orig);
              }
          }
          else
          {
              this.nextHandler.apply(ctx, parent);
          }
      }
docs: /*
  (non-Javadoc)
  
  @see javax.faces.view.facelets.FaceletHandler#apply(javax.faces.view.facelets.FaceletContext,
  javax.faces.component.UIComponent)