Program: 16273
Project: 16273
Buggy source:
public static List<Site> parseSites(File f) throws IOException {
  InputStream inStream=new FileInputStream(f);
  InputStream gzipStream=new GZIPInputStream(inStream);
  Reader decoder=new InputStreamReader(gzipStream);
  BufferedReader buf=new BufferedReader(decoder);
  String line=null;
  List<Site> data=new ArrayList<Site>();
  List<String> headerFields=null;
  int proteinIndex=-1;
  int uniprotIndex=-1;
  int modTypeIndex=-1;
  int residueIndex=-1;
  int orgIndex=-1;
  int groupIndex=-1;
  boolean inHeader=true;
  while ((line=buf.readLine()) != null) {
    if (line.startsWith("String_Node_Str")) {
      headerFields=parseHeaderFields(line);
      proteinIndex=headerFields.indexOf("String_Node_Str");
      uniprotIndex=headerFields.indexOf("String_Node_Str");
      modTypeIndex=headerFields.indexOf("String_Node_Str");
      residueIndex=headerFields.indexOf("String_Node_Str");
      orgIndex=headerFields.indexOf("String_Node_Str");
      groupIndex=headerFields.indexOf("String_Node_Str");
      inHeader=false;
      continue;
    }
    if (inHeader)     continue;
    if (line.trim().length() == 0)     continue;
    String[] spl=line.split("String_Node_Str");
    if (spl.length < 5) {
      logger.info("String_Node_Str" + line);
      continue;
    }
    String protein=spl[proteinIndex];
    String uniprot=spl[uniprotIndex];
    String modType=spl[modTypeIndex];
    String residue=spl[residueIndex];
    String group=spl[groupIndex];
    String organism=spl[orgIndex];
    Site s=new Site();
    s.setProtein(protein);
    s.setUniprot(uniprot);
    s.setModType(modType);
    s.setResidue(residue);
    s.setGroup(group);
    s.setOrganism(organism);
    data.add(s);
  }
  buf.close();
  return data;
}

Fixed version (ground truth):
public static List<Site> parseSites(File f) throws IOException {
  InputStream inStream=new FileInputStream(f);
  InputStream gzipStream=new GZIPInputStream(inStream);
  Reader decoder=new InputStreamReader(gzipStream);
  BufferedReader buf=new BufferedReader(decoder);
  String line=null;
  List<Site> data=new ArrayList<Site>();
  List<String> headerFields=null;
  int proteinIndex=-1;
  int uniprotIndex=-1;
  int residueIndex=-1;
  int orgIndex=-1;
  int groupIndex=-1;
  int geneIndex=-1;
  boolean inHeader=true;
  while ((line=buf.readLine()) != null) {
    if (line.startsWith("String_Node_Str") || line.startsWith("String_Node_Str")) {
      headerFields=parseHeaderFields(line);
      proteinIndex=headerFields.indexOf("String_Node_Str");
      uniprotIndex=headerFields.indexOf("String_Node_Str");
      residueIndex=headerFields.indexOf("String_Node_Str");
      orgIndex=headerFields.indexOf("String_Node_Str");
      groupIndex=headerFields.indexOf("String_Node_Str");
      geneIndex=headerFields.indexOf("String_Node_Str");
      inHeader=false;
      continue;
    }
    if (inHeader)     continue;
    if (line.trim().length() == 0)     continue;
    String[] spl=line.split("String_Node_Str");
    if (spl.length < 5) {
      logger.info("String_Node_Str" + line);
      continue;
    }
    String protein=spl[proteinIndex];
    String uniprot=spl[uniprotIndex];
    String residue=spl[residueIndex];
    String[] resSpl=residue.split("String_Node_Str");
    String modType=null;
    if (resSpl.length == 2) {
      modType=resSpl[1];
    }
    String group=spl[groupIndex];
    String organism=spl[orgIndex];
    String geneSymb=spl[geneIndex];
    Site s=new Site();
    s.setProtein(protein);
    s.setUniprot(uniprot);
    s.setGeneSymb(geneSymb);
    s.setModType(modType);
    s.setResidue(residue);
    s.setGroup(group);
    s.setOrganism(organism);
    data.add(s);
  }
  buf.close();
  return data;
}