Index: /applications/editors/josm/plugins/reverter/build.xml
===================================================================
--- /applications/editors/josm/plugins/reverter/build.xml	(revision 29547)
+++ /applications/editors/josm/plugins/reverter/build.xml	(revision 29548)
@@ -4,5 +4,5 @@
     <property name="commit.message" value="Reverter: Update MultiOsmReader to support null data after redaction"/>
     <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
-    <property name="plugin.main.version" value="5865"/>
+    <property name="plugin.main.version" value="5874"/>
 
     <!-- Configure these properties (replace "..." accordingly).
Index: /applications/editors/josm/plugins/reverter/src/reverter/ChangesetReverter.java
===================================================================
--- /applications/editors/josm/plugins/reverter/src/reverter/ChangesetReverter.java	(revision 29547)
+++ /applications/editors/josm/plugins/reverter/src/reverter/ChangesetReverter.java	(revision 29548)
@@ -3,4 +3,5 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashSet;
@@ -103,5 +104,5 @@
      * @return <code>true</code> if {@see ChangesetDataSetEntry} conforms to current RevertType
      */
-    private boolean CheckOsmChangeEntry(ChangesetDataSetEntry entry) {
+    private boolean checkOsmChangeEntry(ChangesetDataSetEntry entry) {
         if (revertType == RevertType.FULL) return true;
         if (revertType == RevertType.SELECTION_WITH_UNDELETE &&
@@ -152,5 +153,5 @@
         for (Iterator<ChangesetDataSetEntry> it = cds.iterator();it.hasNext();) {
             ChangesetDataSetEntry entry = it.next();
-            if (!CheckOsmChangeEntry(entry)) continue;
+            if (!checkOsmChangeEntry(entry)) continue;
             if (entry.getModificationType() == ChangesetModificationType.CREATED) {
                 created.add(entry.getPrimitive());
@@ -173,5 +174,5 @@
 
     /**
-     * fetch objects that was updated or deleted by changeset
+     * fetch objects that were updated or deleted by changeset
      * @param progressMonitor
      * @throws OsmTransferException
@@ -182,13 +183,10 @@
         progressMonitor.beginTask("Downloading objects history",updated.size()+deleted.size()+1);
         try {
-            for (HistoryOsmPrimitive entry : updated) {
-                rdr.ReadObject(entry.getPrimitiveId(), cds.getEarliestVersion(entry.getPrimitiveId())-1,
-                        progressMonitor.createSubTaskMonitor(1, true));
-                if (progressMonitor.isCanceled()) return;
-            }
-            for (HistoryOsmPrimitive entry : deleted) {
-                rdr.ReadObject(entry.getPrimitiveId(), cds.getEarliestVersion(entry.getPrimitiveId())-1,
-                        progressMonitor.createSubTaskMonitor(1, true));
-                if (progressMonitor.isCanceled()) return;
+            for (HashSet<HistoryOsmPrimitive> collection : Arrays.asList(new HashSet[]{updated, deleted})) {
+                for (HistoryOsmPrimitive entry : collection) {
+                    PrimitiveId id = entry.getPrimitiveId();
+                    rdr.readObject(id, cds.getEarliestVersion(id)-1, progressMonitor.createSubTaskMonitor(1, true));
+                    if (progressMonitor.isCanceled()) return;
+                }
             }
             nds = rdr.parseOsm(progressMonitor.createSubTaskMonitor(1, true));
@@ -322,5 +320,4 @@
         }
 
-
         //////////////////////////////////////////////////////////////////////////
         // Check reversion against current dataset and create necessary conflicts
@@ -335,5 +332,5 @@
         for (Iterator<ChangesetDataSetEntry> it = cds.iterator();it.hasNext();) {
             ChangesetDataSetEntry entry = it.next();
-            if (!CheckOsmChangeEntry(entry)) continue;
+            if (!checkOsmChangeEntry(entry)) continue;
             HistoryOsmPrimitive hp = entry.getPrimitive();
             OsmPrimitive dp = ds.getPrimitiveById(hp.getPrimitiveId());
@@ -345,9 +342,8 @@
                     && (hp.isVisible() || dp.isVisible()) &&
                     /* Don't create conflict if changeset object and dataset object
-                     * has same semantic attributes(but different versions)
-                     */
-                    !hasEqualSemanticAttributes(dp,hp)) {
-
-
+                     * has same semantic attributes (but different versions) */
+                    !hasEqualSemanticAttributes(dp,hp)
+                    /* Don't create conflict if the object has to be deleted but has already been deleted */
+                    && !(toDelete.contains(dp) && dp.isDeleted())) {
                 cmds.add(new ConflictAddCommand(layer,CreateConflict(dp,
                         entry.getModificationType() == ChangesetModificationType.CREATED)));
Index: /applications/editors/josm/plugins/reverter/src/reverter/MultiOsmReader.java
===================================================================
--- /applications/editors/josm/plugins/reverter/src/reverter/MultiOsmReader.java	(revision 29547)
+++ /applications/editors/josm/plugins/reverter/src/reverter/MultiOsmReader.java	(revision 29548)
@@ -18,5 +18,5 @@
 public class MultiOsmReader extends OsmReader {
 
-    public void AddData(InputStream source) throws IllegalDataException {
+    public void addData(InputStream source) throws IllegalDataException {
         try {
             InputStreamReader ir = UTFInputStreamReader.create(source, "UTF-8");
@@ -30,5 +30,6 @@
         }
     }
-    public void ProcessData() throws IllegalDataException {
+    
+    public void processData() throws IllegalDataException {
         prepareDataSet();
     }
Index: /applications/editors/josm/plugins/reverter/src/reverter/OsmServerMultiObjectReader.java
===================================================================
--- /applications/editors/josm/plugins/reverter/src/reverter/OsmServerMultiObjectReader.java	(revision 29547)
+++ /applications/editors/josm/plugins/reverter/src/reverter/OsmServerMultiObjectReader.java	(revision 29548)
@@ -12,13 +12,15 @@
 import org.openstreetmap.josm.io.OsmServerReader;
 import org.openstreetmap.josm.io.OsmTransferException;
+import org.openstreetmap.josm.tools.Utils;
 import org.xml.sax.SAXException;
 
-
 public class OsmServerMultiObjectReader extends OsmServerReader {
-    private MultiOsmReader rdr = new MultiOsmReader();
-    public void ReadObject(PrimitiveId id, int version, ProgressMonitor progressMonitor) throws OsmTransferException {
-        ReadObject(id.getUniqueId(), version, id.getType(), progressMonitor);
+    private final MultiOsmReader rdr = new MultiOsmReader();
+    
+    public void readObject(PrimitiveId id, int version, ProgressMonitor progressMonitor) throws OsmTransferException {
+        readObject(id.getUniqueId(), version, id.getType(), progressMonitor);
     }
-    public void ReadObject(long id,int version,OsmPrimitiveType type,ProgressMonitor progressMonitor) throws OsmTransferException {
+    
+    public void readObject(long id,int version,OsmPrimitiveType type,ProgressMonitor progressMonitor) throws OsmTransferException {
         StringBuffer sb = new StringBuffer();
         sb.append(type.getAPIName());
@@ -30,14 +32,10 @@
         InputStream in = getInputStream(sb.toString(), progressMonitor.createSubTaskMonitor(1, true));
         try {
-            rdr.AddData(in);
+            rdr.addData(in);
         } catch (Exception e) {
             throw new OsmTransferException(e);
         } finally {
             progressMonitor.finishTask();
-            if (in!=null) {
-                try {
-                    in.close();
-                } catch(Exception e) {}
-            }
+            Utils.close(in);
         }
     }
@@ -53,5 +51,5 @@
         progressMonitor.subTask(tr("Preparing history data..."));
         try {
-            rdr.ProcessData();
+            rdr.processData();
             return rdr.getDataSet();
         } catch (Exception e) {
