Index: /applications/editors/josm/plugins/sds/src/org/openstreetmap/hot/sds/DetermineSdsModificationsUploadHook.java
===================================================================
--- /applications/editors/josm/plugins/sds/src/org/openstreetmap/hot/sds/DetermineSdsModificationsUploadHook.java	(revision 33189)
+++ /applications/editors/josm/plugins/sds/src/org/openstreetmap/hot/sds/DetermineSdsModificationsUploadHook.java	(revision 33190)
@@ -52,96 +52,96 @@
 
         // check modified primitives.
-           for (OsmPrimitive upd : apiDataSet.getPrimitivesToUpdate()) {
+        for (OsmPrimitive upd : apiDataSet.getPrimitivesToUpdate()) {
 
-               HashSet<String> allKeys = new HashSet<>();
-               boolean specialTags = false;
+           HashSet<String> allKeys = new HashSet<>();
+           boolean specialTags = false;
 
-               // process tags of new object
-               for (String key : upd.keySet()) {
-                   allKeys.add(key);
-                   if (!specialTags && isSpecialKey(key)) specialTags = true;
+           // process tags of new object
+           for (String key : upd.keySet()) {
+               allKeys.add(key);
+               if (!specialTags && isSpecialKey(key)) specialTags = true;
+           }
+
+           // process tags of old object
+           IPrimitive old = plugin.getOriginalPrimitive(upd);
+           for (String key : old.keySet()) {
+               allKeys.add(key);
+              if (!specialTags && isSpecialKey(key)) specialTags = true;
+           }
+
+           // if neither has special tags, done with this object.
+           if (!specialTags) continue;
+
+           // special tags are involved. find out what, exactly, has changed.
+           boolean changeInSpecialTags = false;
+           boolean changeInOtherTags = false;
+           for (String key : allKeys) {
+               if (old.get(key) == null || upd.get(key) == null || !old.get(key).equals(upd.get(key))) {
+                   if (isSpecialKey(key)) changeInSpecialTags = true; else changeInOtherTags = true;
+                   if (changeInSpecialTags && changeInOtherTags) break;
                }
+           }
 
-               // process tags of old object
-               IPrimitive old = plugin.getOriginalPrimitive(upd);
-               for (String key : old.keySet()) {
-                   allKeys.add(key);
-                  if (!specialTags && isSpecialKey(key)) specialTags = true;
-               }
+           // change *only* in standard tags - done with this object.
+           if (!changeInSpecialTags) continue;
 
-               // if neither has special tags, done with this object.
-               if (!specialTags) continue;
+           // assemble new set of special tags. might turn out to be empty.
+           HashMap<String, String> newSpecialTags = new HashMap<>();
+           for (String key : upd.keySet()) {
+               if (isSpecialKey(key)) newSpecialTags.put(key, upd.get(key));
+           }
 
-               // special tags are involved. find out what, exactly, has changed.
-               boolean changeInSpecialTags = false;
-               boolean changeInOtherTags = false;
-               for (String key : allKeys) {
-                   if (old.get(key) == null || upd.get(key) == null || !old.get(key).equals(upd.get(key))) {
-                       if (isSpecialKey(key)) changeInSpecialTags = true; else changeInOtherTags = true;
-                       if (changeInSpecialTags && changeInOtherTags) break;
+           boolean uploadToOsm = changeInOtherTags;
+
+           // not done yet: if no changes in standard tags, we need to find out if
+           // there were changes in the other properties (node: lat/lon, way/relation:
+           // member list). If the answer is no, then the object must be removed from
+           // JOSM's normal upload queue, else we would be uploading a non-edit.
+           if (!changeInOtherTags) {
+               switch(old.getType()) {
+               case NODE:
+                   INode nold = (INode) old;
+                   INode nupd = (INode) upd;
+                   uploadToOsm = !(nold.getCoor().equals(nupd.getCoor()));
+                   break;
+               case WAY:
+                   IWay wold = (IWay) old;
+                   IWay wupd = (IWay) upd;
+                   if (wold.getNodesCount() != wupd.getNodesCount()) {
+                       uploadToOsm = true;
+                       break;
                    }
-               }
-
-               // change *only* in standard tags - done with this object.
-               if (!changeInSpecialTags) continue;
-
-               // assemble new set of special tags. might turn out to be empty.
-               HashMap<String, String> newSpecialTags = new HashMap<>();
-               for (String key : upd.keySet()) {
-                   if (isSpecialKey(key)) newSpecialTags.put(key, upd.get(key));
-               }
-
-               boolean uploadToOsm = changeInOtherTags;
-
-               // not done yet: if no changes in standard tags, we need to find out if
-               // there were changes in the other properties (node: lat/lon, way/relation:
-               // member list). If the answer is no, then the object must be removed from
-               // JOSM's normal upload queue, else we would be uploading a non-edit.
-               if (!changeInOtherTags) {
-                   switch(old.getType()) {
-                   case NODE:
-                       INode nold = (INode) old;
-                       INode nupd = (INode) upd;
-                       uploadToOsm = !(nold.getCoor().equals(nupd.getCoor()));
-                       break;
-                   case WAY:
-                       IWay wold = (IWay) old;
-                       IWay wupd = (IWay) upd;
-                       if (wold.getNodesCount() != wupd.getNodesCount()) {
+                   for (int i = 0; i < wold.getNodesCount(); i++) {
+                       if (wold.getNodeId(i) != wupd.getNodeId(i)) {
                            uploadToOsm = true;
                            break;
                        }
-                       for (int i = 0; i < wold.getNodesCount(); i++) {
-                           if (wold.getNodeId(i) != wupd.getNodeId(i)) {
-                               uploadToOsm = true;
-                               break;
-                           }
-                       }
+                   }
+                   break;
+               case RELATION:
+                   IRelation rold = (IRelation) old;
+                   IRelation rupd = (IRelation) upd;
+                   if (rold.getMembersCount() != rupd.getMembersCount()) {
+                       uploadToOsm = true;
                        break;
-                   case RELATION:
-                       IRelation rold = (IRelation) old;
-                       IRelation rupd = (IRelation) upd;
-                       if (rold.getMembersCount() != rupd.getMembersCount()) {
+                   }
+                   for (int i = 0; i < rold.getMembersCount(); i++) {
+                       if (rold.getMemberType(i) != rupd.getMemberType(i) ||
+                           rold.getMemberId(i) != rupd.getMemberId(i)) {
                            uploadToOsm = true;
                            break;
                        }
-                       for (int i = 0; i < rold.getMembersCount(); i++) {
-                           if (rold.getMemberType(i) != rupd.getMemberType(i) ||
-                               rold.getMemberId(i) != rupd.getMemberId(i)) {
-                               uploadToOsm = true;
-                               break;
-                           }
-                       }
-                       break;
-                   default: throw new AssertionError("unexpected case: " + old.getType());
                    }
+                   break;
+               default: throw new AssertionError("unexpected case: " + old.getType());
                }
+           }
 
-               // request that new set of special tags be uploaded
-               plugin.enqueueForUpload(upd, newSpecialTags, !uploadToOsm);
+           // request that new set of special tags be uploaded
+           plugin.enqueueForUpload(upd, newSpecialTags, !uploadToOsm);
 
-               // we cannot remove from getPrimitivesToUpdate, this would result in a
-               // ConcurrentModificationException.
-               if (!uploadToOsm) droplist.add(upd);
+           // we cannot remove from getPrimitivesToUpdate, this would result in a
+           // ConcurrentModificationException.
+           if (!uploadToOsm) droplist.add(upd);
 
         }
@@ -149,15 +149,15 @@
         apiDataSet.getPrimitivesToUpdate().removeAll(droplist);
 
-           // check added primitives.
-           for (OsmPrimitive add : apiDataSet.getPrimitivesToAdd()) {
-               // assemble new set of special tags. might turn out to be empty.
-               HashMap<String, String> newSpecialTags = new HashMap<>();
-               for (String key : add.keySet()) {
-                   if (isSpecialKey(key)) newSpecialTags.put(key, add.get(key));
-               }
-               if (!newSpecialTags.isEmpty()) plugin.enqueueForUpload(add, newSpecialTags, false);
+        // check added primitives.
+        for (OsmPrimitive add : apiDataSet.getPrimitivesToAdd()) {
+           // assemble new set of special tags. might turn out to be empty.
+           HashMap<String, String> newSpecialTags = new HashMap<>();
+           for (String key : add.keySet()) {
+               if (isSpecialKey(key)) newSpecialTags.put(key, add.get(key));
+           }
+           if (!newSpecialTags.isEmpty()) plugin.enqueueForUpload(add, newSpecialTags, false);
         }
 
-           // FIXME it is possible that the list of OSM edits is totally empty.
+        // FIXME it is possible that the list of OSM edits is totally empty.
         return true;
 
