code: public final void apply(FaceletContext ctx, UIComponent parent) throws IOException, FacesException,
              FaceletException, ELException
      {
          if (parent == null || !(parent instanceof ValueHolder))
          {
              throw new TagException(this.tag, "Parent not an instance of ValueHolder: " + parent);
          }
  
          // only process if it's been created
          if (parent.getParent() == null)
          {
              // cast to a ValueHolder
              ValueHolder vh = (ValueHolder) parent;
              ValueExpression ve = null;
              Converter c = null;
              if (this.binding != null)
              {
                  ve = this.binding.getValueExpression(ctx, Converter.class);
                  c = (Converter) ve.getValue(ctx);
              }
              if (c == null)
              {
                  c = this.createConverter(ctx);
                  if (ve != null)
                  {
                      ve.setValue(ctx, c);
                  }
              }
              if (c == null)
              {
                  throw new TagException(this.tag, "No Converter was created");
              }
              this.setAttributes(ctx, c);
              vh.setConverter(c);
              Object lv = vh.getLocalValue();
              FacesContext faces = ctx.getFacesContext();
              if (lv instanceof String)
              {
                  vh.setValue(c.getAsObject(faces, parent, (String) lv));
              }
          }
      }
docs: Set Converter instance on parent ValueHolder if it's not being restored.
  <ol>
  <li>Cast to ValueHolder</li>
  <li>If "binding" attribute was specified, fetch/create and re-bind to expression.</li>
  <li>Otherwise, call {@link #createConverter(FaceletContext) createConverter}.</li>
  <li>Call {@link ObjectHandler#setAttributes(FaceletContext, Object) setAttributes} on Converter instance.</li>
  <li>Set the Converter on the ValueHolder</li>
  <li>If the ValueHolder has a localValue, convert it and set the value</li>
  </ol>
  
  @see ValueHolder
  @see Converter
  @see #createConverter(FaceletContext)
  @see javax.faces.view.facelets.FaceletHandler#apply(javax.faces.view.facelets.FaceletContext, javax.faces.component.UIComponent)