Program: 57026
Project: 57026
Buggy source:
@Override public void encodeBegin(FacesContext context,UIComponent component) throws IOException {
  if (!component.isRendered()) {
    return;
  }
  CommandButton commandButton=(CommandButton)component;
  ResponseWriter rw=context.getResponseWriter();
  String CID=component.getClientId(context);
  String type=commandButton.getType();
  if (null == type)   type="String_Node_Str";
  String style=commandButton.getStyle();
  rw.startElement("String_Node_Str",component);
  rw.writeAttribute("String_Node_Str",type,null);
  rw.writeAttribute("String_Node_Str",CID,"String_Node_Str");
  rw.writeAttribute("String_Node_Str",CID,"String_Node_Str");
  Tooltip.generateTooltip(context,commandButton,rw);
  writeAttribute(rw,H.STYLE,style,H.STYLE);
  rw.writeAttribute("String_Node_Str",getStyleClasses(commandButton),"String_Node_Str");
  String title=commandButton.getTitle();
  if (title != null && title.length() > 0) {
    rw.writeAttribute(H.TITLE,title,H.TITLE);
  }
  if (commandButton.isDisabled()) {
    rw.writeAttribute("String_Node_Str","String_Node_Str","String_Node_Str");
  }
  if (!type.equals("String_Node_Str") && !type.equals("String_Node_Str")) {
    String formId=R.findComponentFormId(context,component);
    if (formId == null) {
      throw new FacesException("String_Node_Str" + CID + "String_Node_Str");
    }
  }
  AJAXRenderer.generateBootsFacesAJAXAndJavaScriptForCommandButtons(context,commandButton,rw);
  R.encodeHTML4DHTMLAttrs(rw,commandButton.getAttributes(),A.ALLBUTTON_ATTRS);
}

Fixed version (ground truth):
@Override public void encodeBegin(FacesContext context,UIComponent component) throws IOException {
  if (!component.isRendered()) {
    return;
  }
  CommandButton commandButton=(CommandButton)component;
  ResponseWriter rw=context.getResponseWriter();
  String CID=component.getClientId(context);
  String type=commandButton.getType();
  if (null == type)   type="String_Node_Str";
  String style=commandButton.getStyle();
  rw.startElement("String_Node_Str",component);
  rw.writeAttribute("String_Node_Str",type,null);
  rw.writeAttribute("String_Node_Str",CID,"String_Node_Str");
  rw.writeAttribute("String_Node_Str",CID,"String_Node_Str");
  if (null != commandButton.getDir()) {
    rw.writeAttribute("String_Node_Str",commandButton.getDir(),"String_Node_Str");
  }
  Tooltip.generateTooltip(context,commandButton,rw);
  writeAttribute(rw,H.STYLE,style,H.STYLE);
  rw.writeAttribute("String_Node_Str",getStyleClasses(commandButton),"String_Node_Str");
  String title=commandButton.getTitle();
  if (title != null && title.length() > 0) {
    rw.writeAttribute(H.TITLE,title,H.TITLE);
  }
  if (commandButton.isDisabled()) {
    rw.writeAttribute("String_Node_Str","String_Node_Str","String_Node_Str");
  }
  if (!type.equals("String_Node_Str") && !type.equals("String_Node_Str")) {
    String formId=R.findComponentFormId(context,component);
    if (formId == null) {
      throw new FacesException("String_Node_Str" + CID + "String_Node_Str");
    }
  }
  AJAXRenderer.generateBootsFacesAJAXAndJavaScriptForCommandButtons(context,commandButton,rw);
  R.encodeHTML4DHTMLAttrs(rw,commandButton.getAttributes(),A.ALLBUTTON_ATTRS);
}