Program: 21522
Project: 21522
Buggy source:
/** 
 * Main entry. See -help for options.
 * @param args
 * @throws Exception
 */
public static void main(String args[]) throws Exception {
  System.err.println("String_Node_Str");
  System.err.println("String_Node_Str");
  Set resources=new HashSet();
  root=rootFile.toURL().toString();
  repository=new RepositoryImpl(rootFile.toURL());
  for (int i=0; i < args.length; i++)   try {
    if (args[i].startsWith("String_Node_Str"))     name=args[++i];
 else     if (args[i].startsWith("String_Node_Str")) {
      repositoryFileName=args[++i];
      repository=new RepositoryImpl(new File(repositoryFileName).getAbsoluteFile().toURL());
    }
 else     if (args[i].startsWith("String_Node_Str"))     quiet=true;
 else     if (args[i].startsWith("String_Node_Str"))     urlTemplate=args[++i];
 else     if (args[i].startsWith("String_Node_Str")) {
      licenseURL=new URL(new File("String_Node_Str").toURL(),args[++i]);
    }
 else     if (args[i].startsWith("String_Node_Str")) {
      System.err.println("String_Node_Str");
    }
 else {
      recurse(resources,new File(args[i]));
    }
  }
 catch (  Exception e) {
    System.err.println("String_Node_Str" + args[i] + "String_Node_Str"+ e.getMessage());
    e.printStackTrace();
  }
  List sorted=new ArrayList(resources);
  Collections.sort(sorted,new Comparator(){
    public int compare(    Object r1,    Object r2){
      String s1=getName((ResourceImpl)r1);
      String s2=getName((ResourceImpl)r2);
      return s1.compareTo(s2);
    }
  }
);
  Tag tag=doIndex(sorted);
  if (repositoryFileName != null) {
    ByteArrayOutputStream out=new ByteArrayOutputStream();
    PrintWriter pw=new PrintWriter(new OutputStreamWriter(out,"String_Node_Str"));
    pw.println("String_Node_Str");
    pw.println("String_Node_Str");
    tag.print(0,pw);
    pw.close();
    byte buffer[]=out.toByteArray();
    String name="String_Node_Str";
    FileOutputStream fout=new FileOutputStream(repositoryFileName);
    if (repositoryFileName.endsWith("String_Node_Str")) {
      ZipOutputStream zip=new ZipOutputStream(fout);
      CRC32 checksum=new CRC32();
      checksum.update(buffer);
      ZipEntry ze=new ZipEntry(name);
      ze.setSize(buffer.length);
      ze.setCrc(checksum.getValue());
      zip.putNextEntry(ze);
      zip.write(buffer,0,buffer.length);
      zip.closeEntry();
      zip.close();
    }
 else {
      fout.write(buffer);
    }
    fout.close();
  }
  if (!quiet) {
    PrintWriter pw=new PrintWriter(new OutputStreamWriter(System.out));
    pw.println("String_Node_Str");
    pw.println("String_Node_Str");
    tag.print(0,pw);
    pw.close();
  }
}

Fixed version (ground truth):
/** 
 * Main entry. See -help for options.
 * @param args
 * @throws Exception
 */
public static void main(String args[]) throws Exception {
  System.err.println("String_Node_Str");
  System.err.println("String_Node_Str");
  Set resources=new HashSet();
  root=rootFile.toURL().toString();
  repository=new RepositoryImpl(rootFile.toURL());
  for (int i=0; i < args.length; i++)   try {
    if (args[i].startsWith("String_Node_Str"))     name=args[++i];
 else     if (args[i].startsWith("String_Node_Str")) {
      repositoryFileName=args[++i];
      repository=new RepositoryImpl(new File(repositoryFileName).getAbsoluteFile().toURL());
    }
 else     if (args[i].startsWith("String_Node_Str"))     quiet=true;
 else     if (args[i].startsWith("String_Node_Str"))     rootFile=new File(args[++i]);
 else     if (args[i].startsWith("String_Node_Str"))     urlTemplate=args[++i];
 else     if (args[i].startsWith("String_Node_Str")) {
      licenseURL=new URL(new File("String_Node_Str").toURL(),args[++i]);
    }
 else     if (args[i].startsWith("String_Node_Str")) {
      System.err.println("String_Node_Str");
    }
 else {
      recurse(resources,new File(args[i]));
    }
  }
 catch (  Exception e) {
    System.err.println("String_Node_Str" + args[i] + "String_Node_Str"+ e.getMessage());
    e.printStackTrace();
  }
  List sorted=new ArrayList(resources);
  Collections.sort(sorted,new Comparator(){
    public int compare(    Object r1,    Object r2){
      String s1=getName((ResourceImpl)r1);
      String s2=getName((ResourceImpl)r2);
      return s1.compareTo(s2);
    }
  }
);
  Tag tag=doIndex(sorted);
  if (repositoryFileName != null) {
    ByteArrayOutputStream out=new ByteArrayOutputStream();
    PrintWriter pw=new PrintWriter(new OutputStreamWriter(out,"String_Node_Str"));
    pw.println("String_Node_Str");
    pw.println("String_Node_Str");
    tag.print(0,pw);
    pw.close();
    byte buffer[]=out.toByteArray();
    String name="String_Node_Str";
    FileOutputStream fout=new FileOutputStream(repositoryFileName);
    if (repositoryFileName.endsWith("String_Node_Str")) {
      ZipOutputStream zip=new ZipOutputStream(fout);
      CRC32 checksum=new CRC32();
      checksum.update(buffer);
      ZipEntry ze=new ZipEntry(name);
      ze.setSize(buffer.length);
      ze.setCrc(checksum.getValue());
      zip.putNextEntry(ze);
      zip.write(buffer,0,buffer.length);
      zip.closeEntry();
      zip.close();
    }
 else {
      fout.write(buffer);
    }
    fout.close();
  }
  if (!quiet) {
    PrintWriter pw=new PrintWriter(new OutputStreamWriter(System.out));
    pw.println("String_Node_Str");
    pw.println("String_Node_Str");
    tag.print(0,pw);
    pw.close();
  }
}