@Override
 protected void cancel() {
   canceled = true;
   synchronized (this) {
     if (reader != null) {
       reader.cancel();
     }
   }
 }
 @Override
 protected void realRun() throws SAXException, IOException, OsmTransferException {
   try {
     synchronized (this) {
       reader = new OsmServerChangesetReader();
     }
     downloadedChangesets = new HashSet<Changeset>();
     downloadedChangesets.addAll(
         reader.readChangesets(
             idsToDownload, getProgressMonitor().createSubTaskMonitor(0, false)));
   } catch (OsmTransferException e) {
     if (canceled)
       // ignore exception if canceled
       return;
     // remember other exceptions
     lastException = e;
   }
 }