Source:
<code>void process(Content dataSource, IngestJobContext context, DataSourceIngestModuleProgress progressBar) { progressBar.progress(Bundle.ExtractZone_progress_Msg()); List<AbstractFile> zoneFiles = null; try { zoneFiles = findZoneFiles(dataSource); } catch (TskCoreException ex) { addErrorMessage(Bundle.ExtractZone_process_errMsg_find()); LOG.log(Level.SEVERE, "Unable to find zone identifier files, exception thrown. ", ex); } if (zoneFiles == null || zoneFiles.isEmpty()) { return; } <START> ArrayList<Long> knownPathIDs = null; <END> try { knownPathIDs = getPathIDsForType(BlackboardArtifact.ARTIFACT_TYPE.TSK_WEB_DOWNLOAD); } catch (TskCoreException ex) { addErrorMessage(Bundle.ExtractZone_process_errMsg()); LOG.log(Level.SEVERE, "Failed to build PathIDs List for TSK_WEB_DOWNLOAD", ex); } if (knownPathIDs == null) { return; } Collection<BlackboardArtifact> sourceArtifacts = new ArrayList<>(); Collection<BlackboardArtifact> downloadArtifacts = new ArrayList<>(); for (AbstractFile zoneFile : zoneFiles) { try { processZoneFile(context, dataSource, zoneFile, sourceArtifacts, downloadArtifacts); } catch (TskCoreException ex) { addErrorMessage(Bundle.ExtractZone_process_errMsg()); String message = String.format("Failed to process zone identifier file %s", zoneFile.getName()); LOG.log(Level.WARNING, message, ex); } } IngestServices services = IngestServices.getInstance(); if (!sourceArtifacts.isEmpty()) { services.fireModuleDataEvent(new ModuleDataEvent( RecentActivityExtracterModuleFactory.getModuleName(), BlackboardArtifact.ARTIFACT_TYPE.TSK_DOWNLOAD_SOURCE, sourceArtifacts)); } if (!downloadArtifacts.isEmpty()) { services.fireModuleDataEvent(new ModuleDataEvent( RecentActivityExtracterModuleFactory.getModuleName(), BlackboardArtifact.ARTIFACT_TYPE.TSK_WEB_DOWNLOAD, downloadArtifacts)); } }</code><technical_language>@bcarrier suggested, I knownPathIDs a set</technical_language>

Target:
void process(Content dataSource, IngestJobContext context, DataSourceIngestModuleProgress progressBar) { progressBar.progress(Bundle.ExtractZone_progress_Msg()); List<AbstractFile> zoneFiles = null; try { zoneFiles = currentCase.getServices().getFileManager().findFiles(dataSource, ZONE_IDENTIFIER_FILE); } catch (TskCoreException ex) { addErrorMessage(Bundle.ExtractZone_process_errMsg_find()); LOG.log(Level.SEVERE, "Unable to find zone identifier files, exception thrown. ", ex); } if (zoneFiles == null || zoneFiles.isEmpty()) { return; } Set<Long> knownPathIDs = null; try { knownPathIDs = getPathIDsForType(TSK_WEB_DOWNLOAD); } catch (TskCoreException ex) { addErrorMessage(Bundle.ExtractZone_process_errMsg()); LOG.log(Level.SEVERE, "Failed to build PathIDs List for TSK_WEB_DOWNLOAD", ex); } if (knownPathIDs == null) { return; } Collection<BlackboardArtifact> sourceArtifacts = new ArrayList<>(); Collection<BlackboardArtifact> downloadArtifacts = new ArrayList<>(); for (AbstractFile zoneFile : zoneFiles) { try { processZoneFile(context, dataSource, zoneFile, sourceArtifacts, downloadArtifacts, knownPathIDs); } catch (TskCoreException ex) { addErrorMessage(Bundle.ExtractZone_process_errMsg()); String message = String.format("Failed to process zone identifier file %s", zoneFile.getName()); LOG.log(Level.WARNING, message, ex); } } IngestServices services = IngestServices.getInstance(); if (!sourceArtifacts.isEmpty()) { services.fireModuleDataEvent(new ModuleDataEvent( RecentActivityExtracterModuleFactory.getModuleName(), TSK_DOWNLOAD_SOURCE, sourceArtifacts)); } if (!downloadArtifacts.isEmpty()) { services.fireModuleDataEvent(new ModuleDataEvent( RecentActivityExtracterModuleFactory.getModuleName(), TSK_WEB_DOWNLOAD, downloadArtifacts)); } }