Program: 95641
Project: 95641
Buggy source:
/** 
 * @param url of import file
 * @param paramNameMapper 
 * @param compNameCache 
 * @param assignNewGuid 
 * @param testResultNeeded 
 * @param monitor 
 * @param io console
 * @return IProjectPO new project object 
 * @throws JBVersionException 
 * @throws PMReadException 
 * @throws InterruptedException 
 * @throws PMSaveException 
 */
public IProjectPO readProject(URL url,ParamNameBPDecorator paramNameMapper,final IWritableComponentNameCache compNameCache,boolean assignNewGuid,boolean testResultNeeded,IProgressMonitor monitor,IProgressConsole io) throws JBVersionException, PMReadException, InterruptedException {
  SubMonitor subMonitor=SubMonitor.convert(monitor,Messages.ImportFileBPReading,testResultNeeded ? 2 : 1);
  IProjectPO projectPO=null;
  String folderSrc=null;
  try {
    monitor.subTask(Messages.ImportJsonStoragePreparing);
    folderSrc=Files.createTempDirectory(IMPORT_FOLDER_NAME).toString();
    String fileName=url.getPath().substring(url.getPath().lastIndexOf(File.separatorChar) + 1,url.getPath().lastIndexOf(StringConstants.DOT));
    fileName=URLDecoder.decode(fileName,RECOMMENDED_CHAR_ENCODING);
    String path=URLDecoder.decode(url.getPath(),RECOMMENDED_CHAR_ENCODING);
    unZipIt(path,folderSrc);
    ObjectMapper mapper=new ObjectMapper();
    String infoPath=folderSrc + File.separatorChar + NFO;
    String projectPath=folderSrc + File.separatorChar + PJT;
    InputStreamReader inforReader=new InputStreamReader(new FileInputStream(infoPath),UTF_8_CHAR_ENCODING);
    ExportInfoDTO exportDTO=mapper.readValue(inforReader,ExportInfoDTO.class);
    checkMinimumRequiredJSONVersion(exportDTO);
    InputStreamReader projectReader=new InputStreamReader(new FileInputStream(projectPath),exportDTO.getEncoding());
    ProjectDTO projectDTO=mapper.readValue(projectReader,ProjectDTO.class);
    if (projectExists(projectDTO)) {
      existProjectHandling(io,projectDTO);
      return null;
    }
    projectPO=load(projectDTO,subMonitor.newChild(1),io,assignNewGuid,paramNameMapper,compNameCache,false);
    if (testResultNeeded) {
      String resultPath=folderSrc + File.separatorChar + RST;
      InputStreamReader resultReader=new InputStreamReader(new FileInputStream(resultPath),exportDTO.getEncoding());
      JsonImporter importer=new JsonImporter(monitor,io,false);
      ArrayList<TestresultSummaryDTO> resultDTOs=mapper.readValue(resultReader,new TypeReference<ArrayList<TestresultSummaryDTO>>(){
      }
);
      importer.initTestResultSummaries(subMonitor.newChild(1),resultDTOs,projectPO);
    }
  }
 catch (  IOException e) {
    if (!monitor.isCanceled()) {
      log.info(Messages.GeneralIoExeption);
      throw new PMReadException(Messages.InvalidImportFile,MessageIDs.E_IO_EXCEPTION);
    }
  }
 finally {
    if (folderSrc != null) {
      deleteFiles(Arrays.asList(folderSrc));
    }
  }
  return projectPO;
}

Fixed version (ground truth):
/** 
 * @param url of import file
 * @param paramNameMapper 
 * @param compNameCache 
 * @param assignNewGuid 
 * @param monitor 
 * @param io console
 * @return IProjectPO new project object 
 * @throws JBVersionException 
 * @throws PMReadException 
 * @throws InterruptedException 
 * @throws PMSaveException 
 */
public IProjectPO readProject(URL url,ParamNameBPDecorator paramNameMapper,final IWritableComponentNameCache compNameCache,boolean assignNewGuid,IProgressMonitor monitor,IProgressConsole io) throws JBVersionException, PMReadException, InterruptedException {
  SubMonitor subMonitor=SubMonitor.convert(monitor,Messages.ImportFileBPReading,2);
  IProjectPO projectPO=null;
  monitor.subTask(Messages.ImportJsonStoragePreparing);
  try (InputStream urlInputStream=url.openStream();ZipInputStream zipInputStream=new ZipInputStream(urlInputStream,StandardCharsets.UTF_8)){
    ObjectMapper mapper=new ObjectMapper();
    mapper.disable(JsonParser.Feature.AUTO_CLOSE_SOURCE);
    Map<String,Class> fileTypeMapping=new HashMap<>();
    fileTypeMapping.put(NFO,ExportInfoDTO.class);
    fileTypeMapping.put(PJT,ProjectDTO.class);
    TypeReference tr=new TypeReference<ArrayList<TestresultSummaryDTO>>(){
    }
;
    Map<String,Object> allDTOs=new HashMap<>();
    for (int i=0; i < 3; i++) {
      ZipEntry entry=zipInputStream.getNextEntry();
      String entryName=entry.getName();
      Class entryTypeMapping=fileTypeMapping.get(entryName);
      allDTOs.put(entryName,entryTypeMapping != null ? mapper.readValue(zipInputStream,entryTypeMapping) : mapper.readValue(zipInputStream,tr));
    }
    ExportInfoDTO exportDTO=(ExportInfoDTO)allDTOs.get(NFO);
    checkMinimumRequiredJSONVersion(exportDTO);
    ProjectDTO projectDTO=(ProjectDTO)allDTOs.get(PJT);
    if (projectExists(projectDTO)) {
      existProjectHandling(io,projectDTO);
      return null;
    }
    projectPO=load(projectDTO,subMonitor.newChild(1),io,assignNewGuid,paramNameMapper,compNameCache,false);
    JsonImporter importer=new JsonImporter(monitor,io,false);
    List<TestresultSummaryDTO> summaryDTOs=(List<TestresultSummaryDTO>)allDTOs.get(RST);
    importer.initTestResultSummaries(subMonitor.newChild(1),summaryDTOs,projectPO);
  }
 catch (  IOException e) {
    if (!monitor.isCanceled()) {
      log.info(Messages.GeneralIoExeption);
      throw new PMReadException(Messages.InvalidImportFile,MessageIDs.E_IO_EXCEPTION);
    }
  }
  return projectPO;
}