code: @SuppressFBWarnings(justification = "This is only called from within a synchronized method", value = {"IS2_INCONSISTENT_SYNC"})
      private Map<String, Long> retrieveLastModifiedDates(int startYear, int endYear)
              throws MalformedURLException, DownloadFailedException {
  
          final Set<String> urls = new HashSet<>();
          final String baseUrl = settings.getString(Settings.KEYS.CVE_BASE_JSON);
          for (int i = startYear; i <= endYear; i++) {
              final String url = String.format(baseUrl, i);
              urls.add(url);
          }
          urls.add(settings.getString(Settings.KEYS.CVE_MODIFIED_JSON));
  
          final Map<String, Future<Long>> timestampFutures = new HashMap<>();
          urls.forEach((url) -> {
              final TimestampRetriever timestampRetriever = new TimestampRetriever(url, settings);
              final Future<Long> future = downloadExecutorService.submit(timestampRetriever);
              timestampFutures.put(url, future);
          }
docs: Retrieves the timestamps from the NVD CVE by checking the last modified
  date.
  
  @param startYear the first year whose item to check for the timestamp
  @param endYear the last year whose item to check for the timestamp
  @return the timestamps from the currently published NVD CVE downloads
  page
  @throws MalformedURLException thrown if the URL for the NVD CVE data is
  incorrect.
  @throws DownloadFailedException thrown if there is an error retrieving
  the time stamps from the NVD CVE