Program: 109562
Project: 109562
Buggy source:
@Override public DecompilationResult decompileArchive(File archive,File outputDir) throws DecompilationException {
  if (archive == null)   throw new IllegalArgumentException("String_Node_Str");
  if (!archive.exists())   throw new IllegalArgumentException("String_Node_Str" + archive.getPath());
  if (archive.isDirectory())   throw new IllegalArgumentException("String_Node_Str" + archive.getPath());
  if (outputDir == null)   throw new IllegalArgumentException("String_Node_Str");
  if (outputDir.exists() && !outputDir.isDirectory())   throw new IllegalArgumentException("String_Node_Str" + outputDir.getAbsolutePath());
  log.info("String_Node_Str" + archive.getAbsolutePath() + "String_Node_Str"+ outputDir.getAbsolutePath());
  final JarFile jar;
  try {
    jar=new JarFile(archive);
  }
 catch (  IOException ex) {
    throw new DecompilationException("String_Node_Str" + archive.getPath(),ex);
  }
  DecompilerSettings settings=getDefaultSettings(outputDir);
  settings.setTypeLoader(new CompositeTypeLoader(new JarTypeLoader(jar),settings.getTypeLoader()));
  MetadataSystem metadataSystem=new NoRetryMetadataSystem(settings.getTypeLoader());
  int classesDecompiled=0;
  DecompilationResult res=new DecompilationResult();
  final Enumeration<JarEntry> entries=jar.entries();
  while (entries.hasMoreElements()) {
    final JarEntry entry=entries.nextElement();
    final String name=entry.getName();
    if (!name.endsWith("String_Node_Str"))     continue;
    final String typeName=StringUtils.removeEnd(name,"String_Node_Str");
    try {
      File outputFile=this.decompileType(metadataSystem,typeName);
      if (outputFile != null) {
        res.addDecompiled(name);
        res.addDecompiledOutputFile(outputFile.getAbsolutePath());
      }
      if (++classesDecompiled % 100 == 0)       metadataSystem=new NoRetryMetadataSystem(settings.getTypeLoader());
    }
 catch (    Throwable th) {
      String msg="String_Node_Str" + archive.getPath() + "String_Node_Str"+ name+ "String_Node_Str"+ th.getMessage();
      DecompilationFailure ex=new DecompilationFailure(msg,name,th);
      log.error(msg,ex);
      res.addFailure(ex);
    }
  }
  return res;
}

Fixed version (ground truth):
@Override public DecompilationResult decompileArchive(File archive,File outputDir) throws DecompilationException {
  if (archive == null)   throw new IllegalArgumentException("String_Node_Str");
  if (!archive.exists())   throw new IllegalArgumentException("String_Node_Str" + archive.getPath());
  if (archive.isDirectory())   throw new IllegalArgumentException("String_Node_Str" + archive.getPath());
  if (outputDir == null)   throw new IllegalArgumentException("String_Node_Str");
  if (outputDir.exists() && !outputDir.isDirectory())   throw new IllegalArgumentException("String_Node_Str" + outputDir.getAbsolutePath());
  log.info("String_Node_Str" + archive.getAbsolutePath() + "String_Node_Str"+ outputDir.getAbsolutePath());
  final JarFile jar;
  try {
    jar=new JarFile(archive);
  }
 catch (  IOException ex) {
    throw new DecompilationException("String_Node_Str" + archive.getPath(),ex);
  }
  DecompilerSettings settings=getDefaultSettings(outputDir);
  settings.setTypeLoader(new CompositeTypeLoader(new JarTypeLoader(jar),settings.getTypeLoader()));
  MetadataSystem metadataSystem=new NoRetryMetadataSystem(settings.getTypeLoader());
  int classesDecompiled=0;
  DecompilationResult res=new DecompilationResult();
  final Enumeration<JarEntry> entries=jar.entries();
  while (entries.hasMoreElements()) {
    final JarEntry entry=entries.nextElement();
    final String name=entry.getName();
    if (!name.endsWith("String_Node_Str"))     continue;
    final String typeName=StringUtils.removeEnd(name,"String_Node_Str");
    try {
      File outputFile=this.decompileType(metadataSystem,typeName);
      if (outputFile != null) {
        res.addDecompiled(name,outputFile.getAbsolutePath());
      }
      if (++classesDecompiled % 100 == 0)       metadataSystem=new NoRetryMetadataSystem(settings.getTypeLoader());
    }
 catch (    Throwable th) {
      String msg="String_Node_Str" + archive.getPath() + "String_Node_Str"+ name+ "String_Node_Str"+ th.getMessage();
      DecompilationFailure ex=new DecompilationFailure(msg,name,th);
      log.error(msg,ex);
      res.addFailure(ex);
    }
  }
  return res;
}