Index: applications/editors/josm/plugins/reverter/src/reverter/ChangesetReverter.java
===================================================================
--- applications/editors/josm/plugins/reverter/src/reverter/ChangesetReverter.java	(revision 35999)
+++ applications/editors/josm/plugins/reverter/src/reverter/ChangesetReverter.java	(revision 36042)
@@ -424,4 +424,12 @@
             ChangesetDataSetEntry entry = it.next();
             if (!checkOsmChangeEntry(entry)) continue;
+            if (entry.getModificationType() == ChangesetModificationType.DELETED
+                    && revertType == RevertType.SELECTION_WITH_UNDELETE) {
+                // see #22520: missing merge target when object is first created and then
+                // deleted in the same changeset
+                ChangesetDataSetEntry first = cds.getFirstEntry(entry.getPrimitive().getPrimitiveId());
+                if (first.getModificationType() == ChangesetModificationType.CREATED)
+                    continue;
+            }
             HistoryOsmPrimitive hp = entry.getPrimitive();
             OsmPrimitive dp = ds.getPrimitiveById(hp.getPrimitiveId());
Index: applications/editors/josm/plugins/reverter/src/reverter/RevertChangesetTask.java
===================================================================
--- applications/editors/josm/plugins/reverter/src/reverter/RevertChangesetTask.java	(revision 35999)
+++ applications/editors/josm/plugins/reverter/src/reverter/RevertChangesetTask.java	(revision 36042)
@@ -53,5 +53,17 @@
 
     public RevertChangesetTask(Collection<Integer> changesetIds, RevertType revertType, boolean autoConfirmDownload, boolean newLayer) {
-        super(tr("Reverting..."));
+        this(null, changesetIds, revertType, autoConfirmDownload, newLayer);
+    }
+
+    /**
+     * Create a new task for reverting a changeset
+     * @param progressMonitor The {@link ProgressMonitor} to use. May be {@code null}
+     * @param changesetIds The changeset ids to revert
+     * @param revertType The type of revert to do
+     * @param autoConfirmDownload {@code true} if the user has already indicated that they want to download missing data
+     * @param newLayer {@code true} if the user wants the reversion to be on a new layer
+     */
+    public RevertChangesetTask(ProgressMonitor progressMonitor, Collection<Integer> changesetIds, RevertType revertType, boolean autoConfirmDownload, boolean newLayer) {
+        super(tr("Reverting..."), progressMonitor, false);
         this.changesetIds = new ArrayList<>(changesetIds);
         this.revertType = revertType;
