Program: 26474
Project: 26474
Buggy source:
private String parseHeaders() throws IOException {
  String line=null;
  while ((line=in.readLine()) != null) {
    if (line.startsWith("String_Node_Str")) {
      String[] values=DATA_SPLITTER.split(line);
      if (!values[1].startsWith("String_Node_Str")) {
        if ("String_Node_Str".equals(values[1])) {
          data.setMetadata("String_Node_Str",DataHelper.newString(values[2] + ' ' + values[3]));
          data.setMetadata("String_Node_Str",DataHelper.newString(values[5]));
        }
 else {
          data.setMetadata(DataHelper.newString(values[1]),DataHelper.newString(values[2]));
        }
      }
    }
 else     if (line.startsWith("String_Node_Str")) {
      parseBBBP(DATA_SPLITTER.split(line));
    }
 else     if (line.startsWith("String_Node_Str")) {
      String[] values=DATA_SPLITTER.split(line);
      if ("String_Node_Str".equals(values[1])) {
        topFields=parseTopFields(values);
      }
    }
 else     if (line.startsWith("String_Node_Str")) {
      break;
    }
 else     if (line.startsWith("String_Node_Str")) {
      parseSystemInfo(DATA_SPLITTER.split(line));
    }
 else     if (line.startsWith("String_Node_Str")) {
    }
 else     if (line.isEmpty()) {
      continue;
    }
 else {
      if (!seenFirstDataType) {
        transforms.add(new CPUBusyTransform());
        transforms.add(new DiskTotalTransform());
        if (data.getMetadata("String_Node_Str") != null) {
          isAIX=true;
          transforms.add(new AIXMemoryTransform());
          transforms.add(new AIXLPARTransform());
          transforms.add(new AIXCPUTransform());
        }
 else {
          transforms.add(new LinuxNetPacketTransform());
          transforms.add(new LinuxMemoryTransform());
        }
        String temp=data.getMetadata("String_Node_Str");
        if (temp != null) {
          try {
            fileCPUs=Integer.parseInt(temp);
          }
 catch (          NumberFormatException nfe) {
          }
        }
        seenFirstDataType=true;
      }
      DataType type=buildDataType(DATA_SPLITTER.split(line));
      if (type != null) {
        data.addType(type);
      }
    }
  }
  return line;
}

Fixed version (ground truth):
private String parseHeaders() throws IOException {
  String line=null;
  while ((line=in.readLine()) != null) {
    if (line.startsWith("String_Node_Str")) {
      String[] values=DATA_SPLITTER.split(line);
      if (!values[1].startsWith("String_Node_Str") && (values.length > 2)) {
        if ("String_Node_Str".equals(values[1])) {
          data.setMetadata("String_Node_Str",DataHelper.newString(values[2] + ' ' + values[3]));
          data.setMetadata("String_Node_Str",DataHelper.newString(values[5]));
        }
 else {
          data.setMetadata(DataHelper.newString(values[1]),DataHelper.newString(values[2]));
        }
      }
    }
 else     if (line.startsWith("String_Node_Str")) {
      parseBBBP(DATA_SPLITTER.split(line));
    }
 else     if (line.startsWith("String_Node_Str")) {
      String[] values=DATA_SPLITTER.split(line);
      if ("String_Node_Str".equals(values[1])) {
        topFields=parseTopFields(values);
      }
    }
 else     if (line.startsWith("String_Node_Str")) {
      break;
    }
 else     if (line.startsWith("String_Node_Str")) {
      parseSystemInfo(DATA_SPLITTER.split(line));
    }
 else     if (line.startsWith("String_Node_Str")) {
    }
 else     if (line.isEmpty()) {
      continue;
    }
 else {
      if (!seenFirstDataType) {
        transforms.add(new CPUBusyTransform());
        transforms.add(new DiskTotalTransform());
        if (data.getMetadata("String_Node_Str") != null) {
          isAIX=true;
          transforms.add(new AIXMemoryTransform());
          transforms.add(new AIXLPARTransform());
          transforms.add(new AIXCPUTransform());
        }
 else {
          transforms.add(new LinuxNetPacketTransform());
          transforms.add(new LinuxMemoryTransform());
        }
        String temp=data.getMetadata("String_Node_Str");
        if (temp != null) {
          try {
            fileCPUs=Integer.parseInt(temp);
          }
 catch (          NumberFormatException nfe) {
          }
        }
        seenFirstDataType=true;
      }
      DataType type=buildDataType(DATA_SPLITTER.split(line));
      if (type != null) {
        data.addType(type);
      }
    }
  }
  return line;
}