Program: 50429
Project: 50429
Buggy source:
private void parseHeaderLine(MutableString line){
  line=line.substring(1);
  String[] columnNames=line.toString().split("String_Node_Str");
  for (  String columnName : columnNames) {
    defineFixedColumn(columnName);
    if (!columns.hasColumnName(columnName)) {
      ColumnInfo formatColumn=columns.find("String_Node_Str");
      ColumnField[] fields;
      if (formatColumn != null) {
        fields=new ColumnField[formatColumn.fields.size()];
        int i=0;
        for (        ColumnField f : formatColumn.fields) {
          fields[i]=(new ColumnField(f.id,f.numberOfValues,f.type,f.description));
          i++;
        }
      }
 else {
        fields=new ColumnField[]{new ColumnField("String_Node_Str",1,ColumnType.String,"String_Node_Str")};
      }
      ColumnInfo newCol=new ColumnInfo(columnName,fields);
      newCol.useFormat=true;
      columns.add(newCol);
    }
  }
  formatColumn=columns.find("String_Node_Str");
  for (  ColumnInfo column : columns) {
    if (column.columnIndex == -1) {
      column.columnIndex=globalColumnIndex++;
    }
    for (    ColumnField field : column.fields) {
      if (field.globalFieldIndex == -1) {
        field.globalFieldIndex=globalFieldIndex++;
      }
      final String name;
      if (column.fields.size() == 1) {
        name=column.columnName;
      }
 else {
        name=String.format("String_Node_Str",column.columnName,field.id);
      }
      fieldIndexToName.put(field.globalFieldIndex,name);
    }
  }
  formatColumnIndex=formatColumn.columnIndex;
  numberOfColumns=globalColumnIndex;
  columnStarts=new int[numberOfColumns];
  columnEnds=new int[numberOfColumns];
  numberOfFields=TSV ? numberOfColumns : globalFieldIndex;
  fieldStarts=new int[numberOfFields];
  fieldEnds=new int[numberOfFields];
  fieldPermutation=new int[numberOfFields];
  columnList.addAll(columns);
  Collections.sort(columnList,COLUMN_SORT);
  for (  ColumnInfo column : columnList) {
    fieldList.addAll(column.fields);
  }
}

Fixed version (ground truth):
private void parseHeaderLine(MutableString line){
  line=line.substring(1);
  String[] columnNames=line.toString().split("String_Node_Str");
  for (  String columnName : columnNames) {
    defineFixedColumn(columnName);
    if (!columns.hasColumnName(columnName)) {
      ColumnInfo formatColumn=columns.find("String_Node_Str");
      ColumnField[] fields;
      if (formatColumn != null) {
        fields=new ColumnField[formatColumn.fields.size()];
        int i=0;
        for (        ColumnField f : formatColumn.fields) {
          fields[i]=(new ColumnField(f.id,f.numberOfValues,f.type,f.description));
          i++;
        }
      }
 else {
        fields=new ColumnField[]{new ColumnField("String_Node_Str",1,ColumnType.String,"String_Node_Str")};
      }
      ColumnInfo newCol=new ColumnInfo(columnName,fields);
      newCol.useFormat=true;
      columns.add(newCol);
    }
  }
  formatColumn=columns.find("String_Node_Str");
  for (  ColumnInfo column : columns) {
    if (column.columnIndex == -1) {
      column.columnIndex=globalColumnIndex++;
    }
    for (    ColumnField field : column.fields) {
      if (field.globalFieldIndex == -1) {
        field.globalFieldIndex=globalFieldIndex++;
      }
      final String name;
      if (column.fields.size() == 1) {
        name=column.columnName;
      }
 else {
        name=String.format("String_Node_Str",column.columnName,field.id);
      }
      fieldIndexToName.put(field.globalFieldIndex,name);
    }
  }
  formatColumnIndex=TSV ? -1 : formatColumn.columnIndex;
  numberOfColumns=globalColumnIndex;
  columnStarts=new int[numberOfColumns];
  columnEnds=new int[numberOfColumns];
  numberOfFields=TSV ? numberOfColumns : globalFieldIndex;
  fieldStarts=new int[numberOfFields];
  fieldEnds=new int[numberOfFields];
  fieldPermutation=new int[numberOfFields];
  columnList.addAll(columns);
  Collections.sort(columnList,COLUMN_SORT);
  for (  ColumnInfo column : columnList) {
    fieldList.addAll(column.fields);
  }
}