@Override
  protected void doEncodeChildren(
      ResponseWriter writer, FacesContext context, UIComponent component) throws IOException {

    AbstractTooltip tooltip = (AbstractTooltip) component;

    if (tooltip.getMode() == TooltipMode.client) {
      if (tooltip.getChildCount() > 0) {
        for (UIComponent kid : tooltip.getChildren()) {
          kid.encodeAll(context);
        }
      }
    }
  }
  public void encodeMetaComponent(
      FacesContext context, UIComponent component, String metaComponentId) throws IOException {
    if (AbstractTooltip.CONTENT_META_COMPONENT_ID.equals(metaComponentId)) {
      AbstractTooltip tooltip = (AbstractTooltip) component;
      PartialResponseWriter writer = context.getPartialViewContext().getPartialResponseWriter();
      writer.startUpdate(
          tooltip.getClientId(context) + ":" + AbstractTooltip.CONTENT_META_COMPONENT_ID);

      encodeContentBegin(writer, context, tooltip);
      for (UIComponent child : tooltip.getChildren()) {
        child.encodeAll(context);
      }
      encodeContentEnd(writer, context, tooltip);

      writer.endUpdate();
    }
  }