Program: 56981
Project: 56981
Buggy source:
@Override public void encodeEnd(FacesContext context,UIComponent component) throws IOException {
  if (!component.isRendered()) {
    return;
  }
  InputTextarea inputText=(InputTextarea)component;
  ResponseWriter rw=context.getResponseWriter();
  int span=inputText.getSpan();
  if (span > 0) {
    rw.startElement("String_Node_Str",component);
    rw.writeAttribute("String_Node_Str","String_Node_Str" + span,"String_Node_Str");
  }
  String clientId=inputText.getClientId();
  UIComponent prep=inputText.getFacet("String_Node_Str");
  UIComponent app=inputText.getFacet("String_Node_Str");
  boolean prepend=(prep != null);
  boolean append=(app != null);
  String label=inputText.getLabel();
{
    if (!inputText.isRenderLabel()) {
      label=null;
    }
  }
  String t;
  if (component instanceof InputSecret) {
    t="String_Node_Str";
  }
 else {
    t=inputText.getType();
    if (t == null)     t="String_Node_Str";
  }
  rw.startElement("String_Node_Str",component);
  if (null != inputText.getDir()) {
    rw.writeAttribute("String_Node_Str",inputText.getDir(),"String_Node_Str");
  }
  Tooltip.generateTooltip(context,inputText,rw);
  rw.writeAttribute("String_Node_Str",clientId,"String_Node_Str");
  if (inputText.isInline()) {
    rw.writeAttribute("String_Node_Str","String_Node_Str","String_Node_Str");
  }
 else {
    rw.writeAttribute("String_Node_Str","String_Node_Str","String_Node_Str");
  }
  if (label != null) {
    rw.startElement("String_Node_Str",component);
    rw.writeAttribute("String_Node_Str","String_Node_Str" + clientId,"String_Node_Str");
    generateErrorAndRequiredClass(inputText,rw,clientId);
    rw.writeText(label,null);
    rw.endElement("String_Node_Str");
  }
  if (append || prepend) {
    rw.startElement("String_Node_Str",component);
    rw.writeAttribute("String_Node_Str","String_Node_Str","String_Node_Str");
  }
  if (prepend) {
    if (prep.getClass().getName().endsWith("String_Node_Str") || (prep.getChildCount() > 0 && prep.getChildren().get(0).getClass().getName().endsWith("String_Node_Str"))) {
      rw.startElement("String_Node_Str",inputText);
      rw.writeAttribute("String_Node_Str","String_Node_Str","String_Node_Str");
      prep.encodeAll(context);
      rw.endElement("String_Node_Str");
    }
 else {
      if (prep instanceof Icon)       ((Icon)prep).setAddon(true);
      rw.startElement("String_Node_Str",inputText);
      rw.writeAttribute("String_Node_Str","String_Node_Str","String_Node_Str");
      prep.encodeAll(context);
      rw.endElement("String_Node_Str");
    }
  }
  rw.startElement("String_Node_Str",inputText);
  rw.writeAttribute("String_Node_Str","String_Node_Str" + clientId,null);
  rw.writeAttribute("String_Node_Str","String_Node_Str" + clientId,null);
  rw.writeAttribute("String_Node_Str",t,null);
  rw.writeAttribute("String_Node_Str",inputText.getRows(),"String_Node_Str");
  generateStyleClass(inputText,rw);
  String ph=inputText.getPlaceholder();
  if (ph != null) {
    rw.writeAttribute("String_Node_Str",ph,null);
  }
  if (inputText.isDisabled()) {
    rw.writeAttribute("String_Node_Str","String_Node_Str",null);
  }
  if (inputText.isReadonly()) {
    rw.writeAttribute("String_Node_Str","String_Node_Str",null);
  }
  renderPassThruAttributes(context,component,H.INPUT_TEXT);
  String autocomplete=inputText.getAutocomplete();
  if ((autocomplete != null) && (autocomplete.equals("String_Node_Str"))) {
    rw.writeAttribute("String_Node_Str","String_Node_Str",null);
  }
  AJAXRenderer.generateBootsFacesAJAXAndJavaScript(FacesContext.getCurrentInstance(),inputText,rw);
  String v=getValue2Render(context,component);
  if (null == v)   v="String_Node_Str";
  rw.writeText(v,null);
  rw.endElement("String_Node_Str");
  if (append) {
    if (app.getClass().getName().endsWith("String_Node_Str") || (app.getChildCount() > 0 && app.getChildren().get(0).getClass().getName().endsWith("String_Node_Str"))) {
      rw.startElement("String_Node_Str",inputText);
      rw.writeAttribute("String_Node_Str","String_Node_Str","String_Node_Str");
      app.encodeAll(context);
      rw.endElement("String_Node_Str");
    }
 else {
      if (app instanceof Icon)       ((Icon)app).setAddon(true);
      rw.startElement("String_Node_Str",inputText);
      rw.writeAttribute("String_Node_Str","String_Node_Str","String_Node_Str");
      app.encodeAll(context);
      rw.endElement("String_Node_Str");
    }
  }
  if (append || prepend) {
    rw.endElement("String_Node_Str");
  }
  rw.endElement("String_Node_Str");
  if (span > 0) {
    rw.endElement("String_Node_Str");
  }
  Tooltip.activateTooltips(context,inputText);
}

Fixed version (ground truth):
@Override public void encodeEnd(FacesContext context,UIComponent component) throws IOException {
  if (!component.isRendered()) {
    return;
  }
  InputTextarea inputText=(InputTextarea)component;
  ResponseWriter rw=context.getResponseWriter();
  int span=inputText.getSpan();
  if (span > 0) {
    rw.startElement("String_Node_Str",component);
    rw.writeAttribute("String_Node_Str","String_Node_Str" + span,"String_Node_Str");
  }
  String clientId=inputText.getClientId();
  UIComponent prep=inputText.getFacet("String_Node_Str");
  UIComponent app=inputText.getFacet("String_Node_Str");
  boolean prepend=(prep != null);
  boolean append=(app != null);
  String label=inputText.getLabel();
{
    if (!inputText.isRenderLabel()) {
      label=null;
    }
  }
  String t;
  if (component instanceof InputSecret) {
    t="String_Node_Str";
  }
 else {
    t=inputText.getType();
    if (t == null)     t="String_Node_Str";
  }
  rw.startElement("String_Node_Str",component);
  if (null != inputText.getDir()) {
    rw.writeAttribute("String_Node_Str",inputText.getDir(),"String_Node_Str");
  }
  Tooltip.generateTooltip(context,inputText,rw);
  rw.writeAttribute("String_Node_Str",clientId,"String_Node_Str");
  if (inputText.isInline()) {
    rw.writeAttribute("String_Node_Str","String_Node_Str","String_Node_Str");
  }
 else {
    rw.writeAttribute("String_Node_Str","String_Node_Str","String_Node_Str");
  }
  if (label != null) {
    rw.startElement("String_Node_Str",component);
    rw.writeAttribute("String_Node_Str","String_Node_Str" + clientId,"String_Node_Str");
    generateErrorAndRequiredClass(inputText,rw,clientId);
    rw.writeText(label,null);
    rw.endElement("String_Node_Str");
  }
  if (append || prepend) {
    rw.startElement("String_Node_Str",component);
    rw.writeAttribute("String_Node_Str","String_Node_Str","String_Node_Str");
  }
  if (prepend) {
    R.decorateFacetComponent(inputText,prep,context,rw);
  }
  rw.startElement("String_Node_Str",inputText);
  rw.writeAttribute("String_Node_Str","String_Node_Str" + clientId,null);
  rw.writeAttribute("String_Node_Str","String_Node_Str" + clientId,null);
  rw.writeAttribute("String_Node_Str",t,null);
  rw.writeAttribute("String_Node_Str",inputText.getRows(),"String_Node_Str");
  generateStyleClass(inputText,rw);
  String ph=inputText.getPlaceholder();
  if (ph != null) {
    rw.writeAttribute("String_Node_Str",ph,null);
  }
  if (inputText.isDisabled()) {
    rw.writeAttribute("String_Node_Str","String_Node_Str",null);
  }
  if (inputText.isReadonly()) {
    rw.writeAttribute("String_Node_Str","String_Node_Str",null);
  }
  renderPassThruAttributes(context,component,H.INPUT_TEXT);
  String autocomplete=inputText.getAutocomplete();
  if ((autocomplete != null) && (autocomplete.equals("String_Node_Str"))) {
    rw.writeAttribute("String_Node_Str","String_Node_Str",null);
  }
  AJAXRenderer.generateBootsFacesAJAXAndJavaScript(FacesContext.getCurrentInstance(),inputText,rw);
  String v=getValue2Render(context,component);
  if (null == v)   v="String_Node_Str";
  rw.writeText(v,null);
  rw.endElement("String_Node_Str");
  if (append) {
    R.decorateFacetComponent(inputText,app,context,rw);
  }
  if (append || prepend) {
    rw.endElement("String_Node_Str");
  }
  rw.endElement("String_Node_Str");
  if (span > 0) {
    rw.endElement("String_Node_Str");
  }
  Tooltip.activateTooltips(context,inputText);
}