Program: 128359
Project: 128359
Buggy source:
public static XSDSchema getXSDSchema(String fileName){
  XSDSchema schema=null;
  try {
    if (fileName.endsWith("String_Node_Str")) {
      Project project=ProjectManager.getInstance().getCurrentProject();
      IProject fsProject=null;
      try {
        fsProject=ResourceModelUtils.getProject(project);
      }
 catch (      PersistenceException e2) {
        ExceptionHandler.process(e2);
      }
      IPath path=new Path(fsProject.getLocationURI().getPath());
      path=path.append("String_Node_Str").append("String_Node_Str" + new Path(fileName).lastSegment());
      String unzipPath=path.toPortableString();
      File zip=new File(fileName);
      if (zip.exists()) {
        try {
          FilesUtils.unzip(zip.getAbsolutePath(),unzipPath);
        }
 catch (        Exception e) {
          ExceptionHandler.process(e);
        }
      }
      File unzipFile=new File(unzipPath);
      XSDPopulationUtil2 popUtil=new XSDPopulationUtil2();
      if (unzipFile.exists() && unzipFile.isDirectory()) {
        File[] tempXSDFiles=unzipFile.listFiles();
        for (        File tempXSDFile : tempXSDFiles) {
          popUtil.addSchema(tempXSDFile.getAbsolutePath());
        }
        schema=popUtil.getXSDSchema(tempXSDFiles[0].getAbsolutePath());
      }
    }
 else {
      String newFilePath;
      try {
        newFilePath=CopyDeleteFileUtilForWizard.copyToTemp(fileName);
      }
 catch (      PersistenceException e1) {
        newFilePath=fileName;
      }
      schema=new XSDPopulationUtil2().getXSDSchema(newFilePath);
    }
  }
 catch (  Exception e) {
    ExceptionHandler.process(e);
  }
  return schema;
}

Fixed version (ground truth):
public static XSDSchema getXSDSchema(XSDPopulationUtil2 popUtil,String fileName){
  XSDSchema schema=null;
  if (popUtil == null) {
    popUtil=new XSDPopulationUtil2();
  }
  try {
    if (fileName.endsWith("String_Node_Str")) {
      Project project=ProjectManager.getInstance().getCurrentProject();
      IProject fsProject=null;
      try {
        fsProject=ResourceModelUtils.getProject(project);
      }
 catch (      PersistenceException e2) {
        ExceptionHandler.process(e2);
      }
      IPath path=new Path(fsProject.getLocationURI().getPath());
      path=path.append("String_Node_Str").append("String_Node_Str" + new Path(fileName).lastSegment());
      String unzipPath=path.toPortableString();
      File zip=new File(fileName);
      if (zip.exists()) {
        try {
          FilesUtils.unzip(zip.getAbsolutePath(),unzipPath);
        }
 catch (        Exception e) {
          ExceptionHandler.process(e);
        }
      }
      File unzipFile=new File(unzipPath);
      if (unzipFile.exists() && unzipFile.isDirectory()) {
        File[] tempXSDFiles=unzipFile.listFiles();
        for (        File tempXSDFile : tempXSDFiles) {
          popUtil.addSchema(tempXSDFile.getAbsolutePath());
        }
        schema=popUtil.getXSDSchema(tempXSDFiles[0].getAbsolutePath());
      }
    }
 else {
      String newFilePath;
      try {
        newFilePath=CopyDeleteFileUtilForWizard.copyToTemp(fileName);
      }
 catch (      PersistenceException e1) {
        newFilePath=fileName;
      }
      schema=popUtil.getXSDSchema(newFilePath);
    }
  }
 catch (  Exception e) {
    ExceptionHandler.process(e);
  }
  return schema;
}