Program: 143686
Project: 143686
Buggy source:
public String getRowSelectionScript(){
  if (currentData == null)   return null;
  List<Integer> indexToUpdate;
  if (!hasOnRender && (bgColorScript != null || (getRowSelectedStyle() != null && getRowSelectedStyle().getAttributeCount() > 0)) && (indexToUpdate=getIndexToUpdate()) != null) {
    int firstRow=table.getCurrentPage() * table.getRowsPerPage();
    int lastRow=firstRow + table.getViewSize() - 1;
    int[] newSelectedIndexes=getSelectedIndexes();
    AppendingStringBuffer sab=new AppendingStringBuffer();
    for (    int rowIdx : indexToUpdate) {
      if (rowIdx >= firstRow && rowIdx <= lastRow) {
        ListItem<IRecordInternal> selectedListItem=(ListItem<IRecordInternal>)table.get(Integer.toString(rowIdx));
        if (selectedListItem != null) {
          String selectedId=selectedListItem.getMarkupId();
          boolean isSelected=Arrays.binarySearch(newSelectedIndexes,rowIdx) >= 0;
          Object selectedColor=getListItemBgColor(selectedListItem,isSelected);
          Object selectedFgColor=getListItemFgColor(selectedListItem,isSelected);
          Object selectedFont=getListItemFont(selectedListItem,isSelected);
          Object selectedBorder=getListItemBorder(selectedListItem,isSelected);
          selectedColor=(selectedColor == null ? "String_Node_Str" : selectedColor.toString());
          selectedFgColor=(selectedFgColor == null) ? "String_Node_Str" : selectedFgColor.toString();
          String fstyle="String_Node_Str", fweight="String_Node_Str", fsize="String_Node_Str", ffamily="String_Node_Str";
          if (selectedFont != null) {
            Pair<String,String> fontCSSProps[]=PersistHelper.createFontCSSProperties(selectedFont.toString());
            for (            Pair<String,String> fontCSSProp : fontCSSProps) {
              if (fontCSSProp != null) {
                String key=fontCSSProp.getLeft();
                String value=fontCSSProp.getRight();
                if (value == null)                 value="String_Node_Str";
                if ("String_Node_Str".equals(key))                 fstyle=value;
 else                 if ("String_Node_Str".equals(key))                 fweight=value;
 else                 if ("String_Node_Str".equals(key))                 fsize=value;
 else                 if ("String_Node_Str".equals(key))                 ffamily=value;
              }
            }
          }
          String bstyle="String_Node_Str", bwidth="String_Node_Str", bcolor="String_Node_Str";
          if (selectedBorder != null) {
            Properties borderProperties=new Properties();
            ComponentFactoryHelper.createBorderCSSProperties(selectedBorder.toString(),borderProperties);
            bstyle=borderProperties.getProperty("String_Node_Str");
            if (bstyle == null)             bstyle="String_Node_Str";
            bwidth=borderProperties.getProperty("String_Node_Str");
            bwidth=getFirstToken(bwidth);
            bcolor=borderProperties.getProperty("String_Node_Str");
            bcolor=getFirstToken(bcolor);
          }
 else {
          }
          sab.append("String_Node_Str").append(selectedId).append("String_Node_Str").append(selectedColor).append("String_Node_Str").append(selectedFgColor).append("String_Node_Str").append(fstyle).append("String_Node_Str").append(fweight).append("String_Node_Str").append(fsize).append("String_Node_Str").append(ffamily).append("String_Node_Str").append(bstyle).append("String_Node_Str").append(bwidth).append("String_Node_Str").append(bcolor).append("String_Node_Str");
        }
      }
    }
    String rowSelectionScript=sab.toString();
    if (rowSelectionScript.length() > 0)     return rowSelectionScript;
  }
  return null;
}

Fixed version (ground truth):
public String getRowSelectionScript(){
  if (currentData == null)   return null;
  List<Integer> indexToUpdate;
  if (!hasOnRender && (bgColorScript != null || (getRowSelectedStyle() != null && getRowSelectedStyle().getAttributeCount() > 0)) && (indexToUpdate=getIndexToUpdate()) != null) {
    int firstRow=table.getCurrentPage() * table.getRowsPerPage();
    int lastRow=firstRow + table.getViewSize() - 1;
    int[] newSelectedIndexes=getSelectedIndexes();
    AppendingStringBuffer sab=new AppendingStringBuffer();
    for (    int rowIdx : indexToUpdate) {
      if (rowIdx >= firstRow && rowIdx <= lastRow) {
        ListItem<IRecordInternal> selectedListItem=(ListItem<IRecordInternal>)table.get(Integer.toString(rowIdx));
        if (selectedListItem != null) {
          String selectedId=selectedListItem.getMarkupId();
          boolean isSelected=Arrays.binarySearch(newSelectedIndexes,rowIdx) >= 0;
          Object selectedColor=getListItemBgColor(selectedListItem,isSelected);
          Object selectedFgColor=getListItemFgColor(selectedListItem,isSelected);
          Object selectedFont=getListItemFont(selectedListItem,isSelected);
          Object selectedBorder=getListItemBorder(selectedListItem,isSelected);
          selectedColor=(selectedColor == null ? "String_Node_Str" : selectedColor.toString());
          selectedFgColor=(selectedFgColor == null) ? "String_Node_Str" : selectedFgColor.toString();
          String fstyle="String_Node_Str", fweight="String_Node_Str", fsize="String_Node_Str", ffamily="String_Node_Str";
          if (selectedFont != null) {
            Pair<String,String> fontCSSProps[]=PersistHelper.createFontCSSProperties(selectedFont.toString());
            for (            Pair<String,String> fontCSSProp : fontCSSProps) {
              if (fontCSSProp != null) {
                String key=fontCSSProp.getLeft();
                String value=fontCSSProp.getRight();
                if (value == null)                 value="String_Node_Str";
                if ("String_Node_Str".equals(key))                 fstyle=value;
 else                 if ("String_Node_Str".equals(key))                 fweight=value;
 else                 if ("String_Node_Str".equals(key))                 fsize=value;
 else                 if ("String_Node_Str".equals(key))                 ffamily=value;
              }
            }
          }
          String bstyle="String_Node_Str", bwidth="String_Node_Str", bcolor="String_Node_Str";
          if (selectedBorder != null) {
            Properties borderProperties=new Properties();
            ComponentFactoryHelper.createBorderCSSProperties(selectedBorder.toString(),borderProperties);
            bstyle=borderProperties.getProperty("String_Node_Str");
            if (bstyle == null)             bstyle="String_Node_Str";
            bwidth=borderProperties.getProperty("String_Node_Str");
            bcolor=borderProperties.getProperty("String_Node_Str");
            bcolor=getFirstToken(bcolor);
          }
 else {
          }
          sab.append("String_Node_Str").append(selectedId).append("String_Node_Str").append(selectedColor).append("String_Node_Str").append(selectedFgColor).append("String_Node_Str").append(fstyle).append("String_Node_Str").append(fweight).append("String_Node_Str").append(fsize).append("String_Node_Str").append(ffamily).append("String_Node_Str").append(bstyle).append("String_Node_Str").append(bwidth).append("String_Node_Str").append(bcolor).append("String_Node_Str");
        }
      }
    }
    String rowSelectionScript=sab.toString();
    if (rowSelectionScript.length() > 0)     return rowSelectionScript;
  }
  return null;
}