Program: 125590
Project: 125590
Buggy source:
public void exportResource(String rootName,String directory,String exportResource,int leadupDepth) throws InterruptedException {
  final String separator="String_Node_Str";
  File file=new File(exportResource);
  if (file.isFile()) {
    String destinationName=file.getName();
    if (!"String_Node_Str".equals(directory)) {
      if (directory.endsWith(separator)) {
        destinationName=directory + file.getName();
      }
 else {
        destinationName=directory + separator + file.getName();
      }
    }
    if (rootName != null && !"String_Node_Str".equals(destinationName)) {
      destinationName=rootName + separator + destinationName;
    }
    try {
      this.write(exportResource,destinationName);
    }
 catch (    IOException e) {
      ExceptionHandler.process(e);
    }
catch (    CoreException e) {
      ExceptionHandler.process(e);
    }
  }
 else   if (file.isDirectory()) {
    File[] children=null;
    try {
      children=file.listFiles(new FileFilter(){
        public boolean accept(        File pathname){
          boolean result=true;
          if (pathname != null && pathname.isFile()) {
            try {
              result=Pattern.compile(regEx).matcher(pathname.getName()).find();
            }
 catch (            PatternSyntaxException e) {
            }
          }
          return result;
        }
      }
);
    }
 catch (    Exception e) {
    }
    for (int i=0; i < children.length; i++) {
      exportResource(rootName,directory + file.getName() + separator,children[i].getPath(),leadupDepth + 1);
    }
  }
}

Fixed version (ground truth):
public void exportResource(String rootName,String directory,String exportResource,int leadupDepth) throws InterruptedException {
  final String separator="String_Node_Str";
  File file=new File(exportResource);
  if (file.isFile()) {
    String destinationName=file.getName();
    if (!"String_Node_Str".equals(directory)) {
      if (directory.endsWith(separator)) {
        destinationName=directory + file.getName();
      }
 else {
        destinationName=directory + separator + file.getName();
      }
    }
    if (rootName != null && !"String_Node_Str".equals(destinationName)) {
      destinationName=rootName + separator + destinationName;
    }
    try {
      this.write(exportResource,destinationName);
    }
 catch (    IOException e) {
      ExceptionHandler.process(e);
    }
catch (    CoreException e) {
      ExceptionHandler.process(e);
    }
  }
 else   if (file.isDirectory()) {
    File[] children=null;
    try {
      children=file.listFiles(new FileFilter(){
        @Override public boolean accept(        File pathname){
          boolean result=true;
          if (pathname != null && pathname.isFile()) {
            try {
              result=Pattern.compile(regEx).matcher(pathname.getName()).find();
            }
 catch (            PatternSyntaxException e) {
            }
          }
          return result;
        }
      }
);
    }
 catch (    Exception e) {
    }
    for (    File element : children) {
      exportResource(rootName,directory + file.getName() + separator,element.getPath(),leadupDepth + 1);
    }
  }
}