Program: 168095
Project: 168095
Buggy source:
/** 
 * Function to initialize all the HashMap's used to maintain word counts.
 * @param dictionaryFiles List of dictionary Files
 * @throws IOException Catch error in caller. The errors might be due to bad dictionary format.
 */
private void buildMaps(List<String> dictionaryFiles) throws IOException {
  monitor.subTask("String_Node_Str");
  for (  String dFile : dictionaryFiles) {
    BufferedReader br=new BufferedReader(new FileReader(new File(dFile)));
    String currentLine=br.readLine().trim();
    if (currentLine == null || currentLine.isEmpty()) {
      ConsoleView.printlInConsoleln("String_Node_Str" + dFile + "String_Node_Str");
      br.close();
      continue;
    }
    if (currentLine.equals("String_Node_Str"))     while ((currentLine=br.readLine().trim().toLowerCase()) != null && !currentLine.equals("String_Node_Str")) {
      if (currentLine.equals("String_Node_Str"))       continue;
      categoryID.put(Integer.parseInt(currentLine.split("String_Node_Str")[0].trim()),currentLine.split("String_Node_Str")[1].trim());
    }
    if (currentLine == null) {
      ConsoleView.printlInConsoleln("String_Node_Str" + dFile + "String_Node_Str");
    }
 else {
      while ((currentLine=br.readLine()) != null) {
        if (currentLine.trim().equals("String_Node_Str"))         continue;
        String[] words=currentLine.split("String_Node_Str");
        if (!wordDictionary.containsKey(words[0])) {
          if (stemDictionary) {
            stemmer.setCurrent(words[0]);
            String stemmedWord="String_Node_Str";
            if (stemmer.stem())             stemmedWord=stemmer.getCurrent();
            if (!stemmedWord.equals("String_Node_Str"))             words[0]=stemmedWord;
          }
          wordDictionary.put(words[0],new HashMap<Integer,Double>());
          userFileCount.put(words[0],new HashMap<Integer,Double>());
          userOverallCount.put(words[0],new HashMap<Integer,Double>());
          pennFileCount.put(words[0],new HashMap<String,Double>());
          pennOverallCount.put(words[0],new HashMap<String,Double>());
        }
        for (int i=1; i < words.length; i=increment(i)) {
          if (!wordDictionary.get(words[0]).containsKey(Integer.parseInt(words[i]))) {
            if (weighted) {
              wordDictionary.get(words[0]).put(Integer.parseInt(words[i]),Double.parseDouble(words[i + 1]));
            }
 else {
              wordDictionary.get(words[0]).put(Integer.parseInt(words[i]),1.0);
            }
            userFileCount.get(words[0]).put(Integer.parseInt(words[i]),0.0);
            userOverallCount.get(words[0]).put(Integer.parseInt(words[i]),0.0);
          }
        }
      }
    }
    br.close();
  }
  monitor.worked(2);
}

Fixed version (ground truth):
/** 
 * Function to initialize all the HashMap's used to maintain word counts.
 * @param dictionaryFiles List of dictionary Files
 * @throws IOException Catch error in caller. The errors might be due to bad dictionary format.
 */
private void buildMaps(List<String> dictionaryFiles) throws IOException {
  monitor.subTask("String_Node_Str");
  for (  String dFile : dictionaryFiles) {
    clashWordCount=2147483647;
    BufferedReader br=new BufferedReader(new FileReader(new File(dFile)));
    String currentLine=br.readLine().trim();
    if (currentLine == null) {
      ConsoleView.printlInConsoleln("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")) {
      int key=Integer.parseInt(currentLine.split("String_Node_Str")[0].trim());
      String value=currentLine.split("String_Node_Str")[1].trim();
      if (categoryID.containsKey(key) && !((categoryID.get(key)).equals(value))) {
        addConflictingCategory(key,value);
      }
 else {
        categoryID.put(key,value);
      }
    }
    if (currentLine == null) {
      ConsoleView.printlInConsoleln("String_Node_Str" + dFile + "String_Node_Str");
    }
 else {
      while ((currentLine=br.readLine()) != null) {
        String[] words=currentLine.split("String_Node_Str");
        if (!wordDictionary.containsKey(words[0])) {
          if (stemDictionary) {
            stemmer.setCurrent(words[0]);
            String stemmedWord="String_Node_Str";
            if (stemmer.stem())             stemmedWord=stemmer.getCurrent();
            if (!stemmedWord.equals("String_Node_Str"))             words[0]=stemmedWord;
          }
          wordDictionary.put(words[0],new HashMap<Integer,Double>());
          userFileCount.put(words[0],new HashMap<Integer,Double>());
          userOverallCount.put(words[0],new HashMap<Integer,Double>());
          pennFileCount.put(words[0],new HashMap<String,Double>());
          pennOverallCount.put(words[0],new HashMap<String,Double>());
        }
        for (int i=1; i < words.length; i=increment(i)) {
          if (oldCategoryMap.containsKey(Integer.parseInt(words[i]))) {
            words[i]=oldCategoryMap.get(Integer.parseInt(words[i])) + "String_Node_Str";
          }
          if (!wordDictionary.get(words[0]).containsKey(Integer.parseInt(words[i]))) {
            if (weighted) {
              wordDictionary.get(words[0]).put(Integer.parseInt(words[i]),Double.parseDouble(words[i + 1]));
            }
 else {
              wordDictionary.get(words[0]).put(Integer.parseInt(words[i]),1.0);
            }
            userFileCount.get(words[0]).put(Integer.parseInt(words[i]),0.0);
            userOverallCount.get(words[0]).put(Integer.parseInt(words[i]),0.0);
          }
        }
      }
    }
    br.close();
  }
  monitor.worked(2);
}