Program: 168094
Project: 168094
Buggy source:
public void buildCategorizer(List<String> dictFiles) throws IOException {
  for (  String dFile : dictFiles) {
    BufferedReader br=new BufferedReader(new FileReader(new File(dFile)));
    String currentLine=br.readLine().trim();
    if (currentLine == null) {
      logger.warning("String_Node_Str" + dFile + "String_Node_Str");
      appendLog("String_Node_Str" + dFile + "String_Node_Str");
    }
    if (currentLine.equals("String_Node_Str"))     while ((currentLine=br.readLine().trim().toLowerCase()) != null && !currentLine.equals("String_Node_Str"))     categories.put(Integer.parseInt(currentLine.split("String_Node_Str")[0].trim()),currentLine.split("String_Node_Str")[1].trim());
    if (currentLine == null) {
      logger.warning("String_Node_Str" + dFile + "String_Node_Str");
      appendLog("String_Node_Str" + dFile + "String_Node_Str");
    }
 else {
      while ((currentLine=br.readLine()) != null) {
        ArrayList<Integer> categories=new ArrayList<Integer>();
        ArrayList<Integer> condCategories=new ArrayList<Integer>();
        HashMap<String,Double> weights=new HashMap<String,Double>();
        currentLine=currentLine.trim().toLowerCase();
        if (currentLine.equals("String_Node_Str"))         continue;
        boolean conditional=false;
        String[] words=currentLine.split("String_Node_Str");
        String currPhrase=words[0];
        String condPhrase=words[0];
        for (int i=initialize(); i < words.length - 1; i=increment(i)) {
          if (!words[i].matches("String_Node_Str")) {
            if (words[i].contains("String_Node_Str")) {
              String[] splits=words[i].split("String_Node_Str");
              categories.add(Integer.parseInt(splits[1]));
              if (splits[0].contains("String_Node_Str")) {
                conditional=true;
                condCategories.add(Integer.parseInt(splits[0].split("String_Node_Str")[1]));
                condPhrase=words[0] + "String_Node_Str" + splits[0].split("String_Node_Str")[0].replace("String_Node_Str","String_Node_Str");
              }
            }
 else             if (words[i].contains("String_Node_Str") || words[i].contains("String_Node_Str"))             continue;
 else {
              currPhrase=currPhrase + "String_Node_Str" + words[i];
              phraseDetect=true;
            }
            continue;
          }
          try {
            if (this.weighted) {
              weights.put(this.categories.get(Integer.parseInt(words[i])),Double.parseDouble(words[i + 1]));
            }
          }
 catch (          Exception e) {
            String a=e.getMessage();
          }
          categories.add(Integer.parseInt(words[i]));
        }
        String currentWord=words[0];
        if (phraseDetect)         currentWord=currPhrase;
        if (stemDictionary && !doLiwcStemming) {
          currentWord=currentWord.replace("String_Node_Str","String_Node_Str");
          stemmer.setCurrent(currentWord);
          String stemmedWord="String_Node_Str";
          if (stemmer.stem())           stemmedWord=stemmer.getCurrent();
          if (!stemmedWord.equals("String_Node_Str"))           currentWord=stemmedWord;
        }
        if (!doLiwcStemming)         currentWord=currentWord.replace("String_Node_Str","String_Node_Str");
        categorizer.insert(currentWord,categories);
        if (phraseDetect)         phraseLookup.put(currentWord,categories);
        if (conditional)         conditionalCategory.put(condPhrase,condCategories);
        if (this.weighted)         weightMap.put(currentWord,weights);
      }
    }
    br.close();
  }
}

Fixed version (ground truth):
public void buildCategorizer(List<String> dictFiles) throws IOException {
  for (  String dFile : dictFiles) {
    BufferedReader br=new BufferedReader(new FileReader(new File(dFile)));
    String currentLine=br.readLine().trim();
    if (currentLine == null) {
      logger.warning("String_Node_Str" + dFile + "String_Node_Str");
      appendLog("String_Node_Str" + dFile + "String_Node_Str");
    }
    if (currentLine.equals("String_Node_Str"))     while ((currentLine=br.readLine().trim().toLowerCase()) != null && !currentLine.equals("String_Node_Str"))     categories.put(Integer.parseInt(currentLine.split("String_Node_Str")[0].trim()),currentLine.split("String_Node_Str")[1].trim());
    if (currentLine == null) {
      logger.warning("String_Node_Str" + dFile + "String_Node_Str");
      appendLog("String_Node_Str" + dFile + "String_Node_Str");
    }
 else {
      while ((currentLine=br.readLine()) != null) {
        ArrayList<Integer> categories=new ArrayList<Integer>();
        ArrayList<Integer> condCategories=new ArrayList<Integer>();
        HashMap<String,Double> weights=new HashMap<String,Double>();
        currentLine=currentLine.trim().toLowerCase();
        if (currentLine.equals("String_Node_Str"))         continue;
        boolean conditional=false;
        String[] words=currentLine.split("String_Node_Str");
        String currPhrase=words[0];
        String condPhrase=words[0];
        for (int i=initialize(); i < words.length; i=increment(i)) {
          if (!words[i].matches("String_Node_Str")) {
            if (words[i].contains("String_Node_Str")) {
              String[] splits=words[i].split("String_Node_Str");
              categories.add(Integer.parseInt(splits[1]));
              if (splits[0].contains("String_Node_Str")) {
                conditional=true;
                condCategories.add(Integer.parseInt(splits[0].split("String_Node_Str")[1]));
                condPhrase=words[0] + "String_Node_Str" + splits[0].split("String_Node_Str")[0].replace("String_Node_Str","String_Node_Str");
              }
            }
 else             if (words[i].contains("String_Node_Str") || words[i].contains("String_Node_Str"))             continue;
 else {
              currPhrase=currPhrase + "String_Node_Str" + words[i];
              phraseDetect=true;
            }
            continue;
          }
          try {
            if (this.weighted) {
              weights.put(this.categories.get(Integer.parseInt(words[i])),Double.parseDouble(words[i + 1]));
            }
          }
 catch (          Exception e) {
            logger.warning("String_Node_Str" + dFile + "String_Node_Str");
            appendLog("String_Node_Str" + dFile + "String_Node_Str");
          }
          categories.add(Integer.parseInt(words[i]));
        }
        String currentWord=words[0];
        if (phraseDetect)         currentWord=currPhrase;
        if (stemDictionary && !doLiwcStemming) {
          currentWord=currentWord.replace("String_Node_Str","String_Node_Str");
          stemmer.setCurrent(currentWord);
          String stemmedWord="String_Node_Str";
          if (stemmer.stem())           stemmedWord=stemmer.getCurrent();
          if (!stemmedWord.equals("String_Node_Str"))           currentWord=stemmedWord;
        }
        if (!doLiwcStemming)         currentWord=currentWord.replace("String_Node_Str","String_Node_Str");
        categorizer.insert(currentWord,categories);
        if (phraseDetect)         phraseLookup.put(currentWord,categories);
        if (conditional)         conditionalCategory.put(condPhrase,condCategories);
        if (this.weighted)         weightMap.put(currentWord,weights);
      }
    }
    br.close();
  }
}