Program: 52901
Project: 52901
Buggy source:
/** 
 * Reads a dataset from a buffered reader.
 * @param name Name of the dataset, must end with csv for comma separated files.
 * @param language Language of the dataset.
 * @param reader The inputsource of the dataset.
 * @return The dataset
 * @throws DaoException
 */
protected Dataset read(String name,Language language,BufferedReader reader) throws DaoException {
  List<KnownSim> result=new ArrayList<KnownSim>();
  try {
    String delim="String_Node_Str";
    if (name.toLowerCase().endsWith("String_Node_Str")) {
      delim="String_Node_Str";
    }
    while (true) {
      String line=reader.readLine();
      if (line == null)       break;
      String tokens[]=line.split(delim);
      if (tokens.length == 3) {
        KnownSim ks=new KnownSim(tokens[0],tokens[1],Double.valueOf(tokens[2]),language);
        if (resolvePhrases) {
          LocalId id1=disambiguator.disambiguateTop(new LocalString(language,ks.phrase1),null);
          LocalId id2=disambiguator.disambiguateTop(new LocalString(language,ks.phrase2),null);
          if (id1 != null) {
            ks.wpId1=id1.getId();
          }
          if (id2 != null) {
            ks.wpId2=id2.getId();
          }
        }
        result.add(ks);
      }
 else {
        throw new DaoException("String_Node_Str" + name + "String_Node_Str"+ "String_Node_Str"+ StringEscapeUtils.escapeJava(line)+ "String_Node_Str");
      }
    }
    reader.close();
  }
 catch (  IOException e) {
    throw new DaoException(e);
  }
  Dataset dataset=new Dataset(name,language,result);
  if (normalize) {
    dataset.normalize();
  }
  return dataset;
}

Fixed version (ground truth):
/** 
 * Reads a dataset from a buffered reader.
 * @param name Name of the dataset, must end with csv for comma separated files.
 * @param language Language of the dataset.
 * @param reader The inputsource of the dataset.
 * @return The dataset
 * @throws DaoException
 */
protected Dataset read(String name,Language language,BufferedReader reader) throws DaoException {
  List<KnownSim> result=new ArrayList<KnownSim>();
  try {
    String delim="String_Node_Str";
    if (name.toLowerCase().endsWith("String_Node_Str")) {
      delim="String_Node_Str";
    }
    while (true) {
      String line=reader.readLine();
      if (line == null)       break;
      String tokens[]=line.split(delim);
      if (tokens.length >= 3) {
        KnownSim ks=new KnownSim(tokens[0],tokens[1],Double.valueOf(tokens[2]),language);
        if (resolvePhrases) {
          LocalId id1=disambiguator.disambiguateTop(new LocalString(language,ks.phrase1),null);
          LocalId id2=disambiguator.disambiguateTop(new LocalString(language,ks.phrase2),null);
          if (id1 != null) {
            ks.wpId1=id1.getId();
          }
          if (id2 != null) {
            ks.wpId2=id2.getId();
          }
        }
        result.add(ks);
      }
 else {
        throw new DaoException("String_Node_Str" + name + "String_Node_Str"+ "String_Node_Str"+ StringEscapeUtils.escapeJava(line)+ "String_Node_Str");
      }
    }
    reader.close();
  }
 catch (  IOException e) {
    throw new DaoException(e);
  }
  Dataset dataset=new Dataset(name,language,result);
  if (normalize) {
    dataset.normalize();
  }
  return dataset;
}