Program: 141381
Project: 141381
Buggy source:
@Override public StepResult execute(Design design,Context context){
  logger.info("String_Node_Str");
  logger.info("String_Node_Str" + context.getBasePathname() + "String_Node_Str"+ context.getOutputPathname());
  final long startTime=System.currentTimeMillis();
  final Configuration conf=this.conf;
  if (context.getBasePathname() == null)   throw new NullPointerException("String_Node_Str");
  if (context.getOutputPathname() == null)   throw new NullPointerException("String_Node_Str");
  try {
    final Path inPath=new Path(context.getBasePathname());
    final Path outPath=new Path(context.getOutputPathname());
    if (!PathUtils.isExistingDirectoryFile(inPath,conf))     throw new EoulsanException("String_Node_Str" + inPath);
    final FileSystem inFs=inPath.getFileSystem(conf);
    final FileSystem outFs=outPath.getFileSystem(conf);
    final FileStatus[] files=inFs.listStatus(inPath,new PathFilter(){
      @Override public boolean accept(      final Path p){
        final String filename=p.getName();
        if (filename.startsWith("String_Node_Str") && filename.endsWith("String_Node_Str"))         return true;
        return false;
      }
    }
);
    if (!outFs.exists(outPath))     outFs.mkdirs(outPath);
    final StringBuilder logMsg=new StringBuilder();
    if (files != null)     for (    FileStatus f : files) {
      final Path ip=f.getPath();
      final Path op=new Path(outPath,ip.getName());
      String msg="String_Node_Str" + ip + "String_Node_Str"+ op;
      logger.info(msg);
      logMsg.append(msg);
      logMsg.append("String_Node_Str");
      PathUtils.copy(ip,op,conf);
    }
    return new StepResult(this,startTime,logMsg.toString());
  }
 catch (  EoulsanException e) {
    return new StepResult(this,e,"String_Node_Str" + e.getMessage());
  }
catch (  IOException e) {
    return new StepResult(this,e,"String_Node_Str" + e.getMessage());
  }
}

Fixed version (ground truth):
@Override public StepResult execute(Design design,Context context){
  logger.info("String_Node_Str");
  logger.info("String_Node_Str" + context.getBasePathname() + "String_Node_Str"+ context.getOutputPathname());
  final long startTime=System.currentTimeMillis();
  final Configuration conf=this.conf;
  if (context.getBasePathname() == null)   throw new NullPointerException("String_Node_Str");
  if (context.getOutputPathname() == null)   throw new NullPointerException("String_Node_Str");
  try {
    final Path inPath=new Path(context.getBasePathname());
    final Path outPath=new Path(context.getOutputPathname());
    if (!PathUtils.isExistingDirectoryFile(inPath,conf))     throw new EoulsanException("String_Node_Str" + inPath);
    final FileSystem inFs=inPath.getFileSystem(conf);
    final FileSystem outFs=outPath.getFileSystem(conf);
    final FileStatus[] files=inFs.listStatus(inPath,new PathFilter(){
      @Override public boolean accept(      final Path p){
        final String filename=p.getName();
        final DataFormat df=DataFormats.EXPRESSION_RESULTS_TXT;
        if (filename.startsWith(df.getType().getPrefix()) && filename.endsWith(df.getDefaultExtention()))         return true;
        return false;
      }
    }
);
    if (!outFs.exists(outPath))     outFs.mkdirs(outPath);
    final StringBuilder logMsg=new StringBuilder();
    if (files != null)     for (    FileStatus f : files) {
      final Path ip=f.getPath();
      final Path op=new Path(outPath,ip.getName());
      String msg="String_Node_Str" + ip + "String_Node_Str"+ op;
      logger.info(msg);
      logMsg.append(msg);
      logMsg.append("String_Node_Str");
      PathUtils.copy(ip,op,conf);
    }
    return new StepResult(this,startTime,logMsg.toString());
  }
 catch (  EoulsanException e) {
    return new StepResult(this,e,"String_Node_Str" + e.getMessage());
  }
catch (  IOException e) {
    return new StepResult(this,e,"String_Node_Str" + e.getMessage());
  }
}