Program: 141428
Project: 141428
Buggy source:
@Override public Design read() throws EoulsanIOException {
  Map<String,List<String>> data=new HashMap<String,List<String>>();
  List<String> fieldnames=new ArrayList<String>();
  try {
    setBufferedReader(new BufferedReader(new InputStreamReader(getInputStream(),Globals.DEFAULT_FILE_ENCODING)));
    BufferedReader br=getBufferedReader();
    final String separator=getSeparatorField();
    String line=null;
    boolean firstLine=true;
    while ((line=br.readLine()) != null) {
      final String empty=line.trim();
      if ("String_Node_Str".equals(empty) || empty.startsWith("String_Node_Str"))       continue;
      final String[] fields=line.split(separator);
      if (firstLine) {
        for (int i=0; i < fields.length; i++) {
          final String field=fields[i].trim();
          data.put(field,new ArrayList<String>());
          fieldnames.add(field);
        }
        firstLine=false;
      }
 else {
        for (int i=0; i < fields.length; i++) {
          final String field=fields[i].trim();
          final String fieldName=fieldnames.get(i);
          List<String> l=data.get(fieldName);
          if ((SLIDENUMBER_FIELD.equals(fieldName) || NAME_FIELD.equals(fieldName)) && l.contains(field))           throw new EoulsanIOException("String_Node_Str" + "String_Node_Str");
          l.add(field);
        }
      }
    }
  }
 catch (  IOException e) {
    throw new EoulsanIOException("String_Node_Str");
  }
  try {
    getBufferedReader().close();
  }
 catch (  IOException e) {
    throw new EoulsanIOException("String_Node_Str" + e.getMessage());
  }
  if (!data.containsKey(SLIDENUMBER_FIELD))   throw new EoulsanIOException("String_Node_Str");
  if (!data.containsKey(FILENAME_FIELD))   throw new EoulsanIOException("String_Node_Str");
  Design design=DesignFactory.createEmptyDesign();
  boolean refName=data.containsKey(NAME_FIELD);
  List<String> ids=data.get(refName ? NAME_FIELD : SLIDENUMBER_FIELD);
  final int count=ids.size();
  for (  final String id : ids)   design.addSample(id);
  if (refName) {
    design.addMetadataField(SampleMetadata.SLIDE_NUMBER_FIELD);
    List<String> slides=data.get(SLIDENUMBER_FIELD);
    for (int i=0; i < count; i++) {
      design.getSampleMetadata(ids.get(i)).setSlideNumber(Integer.parseInt(slides.get(i)));
      design.getSample(ids.get(i)).setId(Integer.parseInt(slides.get(i)));
    }
  }
  List<String> filenames=data.get(FILENAME_FIELD);
  for (int i=0; i < count; i++) {
    DataSource source=DataSourceUtils.identifyDataSource(this.baseDir,filenames.get(i));
    design.setSource(ids.get(i),source.toString());
  }
  for (  String fd : fieldnames) {
    if (SLIDENUMBER_FIELD.equals(fd) || NAME_FIELD.equals(fd) || FILENAME_FIELD.equals(fd))     continue;
    design.addMetadataField(fd);
    List<String> descriptions=data.get(fd);
    int k=0;
    for (    String desc : descriptions)     design.setMetadata(ids.get(k++),fd,desc);
  }
  return design;
}

Fixed version (ground truth):
@Override public Design read() throws EoulsanIOException {
  Map<String,List<String>> data=new HashMap<String,List<String>>();
  List<String> fieldnames=new ArrayList<String>();
  try {
    setBufferedReader(new BufferedReader(new InputStreamReader(getInputStream(),Globals.DEFAULT_FILE_ENCODING)));
    BufferedReader br=getBufferedReader();
    final String separator=getSeparatorField();
    String line=null;
    boolean firstLine=true;
    while ((line=br.readLine()) != null) {
      final String empty=line.trim();
      if ("String_Node_Str".equals(empty) || empty.startsWith("String_Node_Str"))       continue;
      final String[] fields=line.split(separator);
      if (firstLine) {
        for (int i=0; i < fields.length; i++) {
          final String field=fields[i].trim();
          data.put(field,new ArrayList<String>());
          fieldnames.add(field);
        }
        firstLine=false;
      }
 else {
        for (int i=0; i < fields.length; i++) {
          final String field=fields[i].trim();
          final String fieldName=fieldnames.get(i);
          List<String> l=data.get(fieldName);
          if ((SLIDENUMBER_FIELD.equals(fieldName) || NAME_FIELD.equals(fieldName)) && l.contains(field))           throw new EoulsanIOException("String_Node_Str" + "String_Node_Str");
          l.add(field);
        }
      }
    }
  }
 catch (  IOException e) {
    throw new EoulsanIOException("String_Node_Str");
  }
  try {
    getBufferedReader().close();
  }
 catch (  IOException e) {
    throw new EoulsanIOException("String_Node_Str" + e.getMessage());
  }
  if (!data.containsKey(SLIDENUMBER_FIELD))   throw new EoulsanIOException("String_Node_Str");
  if (!data.containsKey(FILENAME_FIELD))   throw new EoulsanIOException("String_Node_Str");
  Design design=DesignFactory.createEmptyDesign();
  List<String> names=data.get(NAME_FIELD);
  List<String> ids=data.get(SLIDENUMBER_FIELD);
  final int count=ids.size();
  for (int i=0; i < names.size(); i++) {
    final String name=names.get(i);
    design.addSample(name);
    design.getSample(name).setId(Integer.parseInt(ids.get(i)));
  }
  List<String> filenames=data.get(FILENAME_FIELD);
  for (int i=0; i < count; i++) {
    DataSource source=DataSourceUtils.identifyDataSource(this.baseDir,filenames.get(i));
    design.setSource(names.get(i),source.toString());
  }
  for (  String fd : fieldnames) {
    if (SLIDENUMBER_FIELD.equals(fd) || NAME_FIELD.equals(fd) || FILENAME_FIELD.equals(fd))     continue;
    design.addMetadataField(fd);
    List<String> descriptions=data.get(fd);
    int k=0;
    for (    String desc : descriptions)     design.setMetadata(names.get(k++),fd,desc);
  }
  return design;
}