Index: /trunk/src/org/openstreetmap/josm/actions/JoinAreasAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/JoinAreasAction.java	(revision 2577)
+++ /trunk/src/org/openstreetmap/josm/actions/JoinAreasAction.java	(revision 2578)
@@ -29,8 +29,4 @@
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.actions.CombineWayAction;
-import org.openstreetmap.josm.actions.JosmAction;
-import org.openstreetmap.josm.actions.ReverseWayAction;
-import org.openstreetmap.josm.actions.SplitWayAction;
 import org.openstreetmap.josm.command.AddCommand;
 import org.openstreetmap.josm.command.ChangeCommand;
@@ -75,16 +71,21 @@
             if(this.pos == o.pos)
                 return (this.dis - o.dis) > 0 ? 1 : -1;
-            return this.pos - o.pos;
-        }
-    };
+                return this.pos - o.pos;
+        }
+    }
 
     // HelperClass
     // Saves a relation and a role an OsmPrimitve was part of until it was stripped from all relations
     private class RelationRole {
-        public Relation rel;
-        public String role;
+        public final Relation rel;
+        public final String role;
         public RelationRole(Relation rel, String role) {
             this.rel = rel;
             this.role = role;
+        }
+
+        @Override
+        public int hashCode() {
+            return rel.hashCode();
         }
 
@@ -100,5 +101,5 @@
     public JoinAreasAction() {
         super(tr("Join overlapping Areas"), "joinareas", tr("Joins areas that overlap each other"), Shortcut.registerShortcut("tools:joinareas", tr("Tool: {0}", tr("Join overlapping Areas")),
-        KeyEvent.VK_J, Shortcut.GROUP_EDIT, Shortcut.SHIFT_DEFAULT), true);
+                KeyEvent.VK_J, Shortcut.GROUP_EDIT, Shortcut.SHIFT_DEFAULT), true);
     }
 
@@ -116,6 +117,7 @@
         OsmDataLayer dataLayer = Main.map.mapView.getEditLayer();
         for (DataSource ds : dataLayer.data.dataSources) {
-            if (ds.bounds != null)
+            if (ds.bounds != null) {
                 bounds.add(ds.bounds);
+            }
         }
 
@@ -137,5 +139,7 @@
             // This is copied from SimplifyAction and should be probably ported to tools
             for (Node node : way.getNodes()) {
-                if(askedAlready) break;
+                if(askedAlready) {
+                    break;
+                }
                 boolean isInsideOneBoundingBox = false;
                 for (Bounds b : bounds) {
@@ -151,6 +155,6 @@
                                     + "This can lead to nodes being deleted accidentally.\n"
                                     + "Are you really sure to continue?"),
-                            tr("Please abort if you are not sure"), JOptionPane.YES_NO_OPTION,
-                            JOptionPane.WARNING_MESSAGE);
+                                    tr("Please abort if you are not sure"), JOptionPane.YES_NO_OPTION,
+                                    JOptionPane.WARNING_MESSAGE);
 
                     if (option != JOptionPane.YES_OPTION) return;
@@ -173,6 +177,7 @@
             DataSet ds = Main.main.getCurrentDataSet();
             ds.fireSelectionChanged();
-        } else
+        } else {
             JOptionPane.showMessageDialog(Main.parent, tr("No intersection found. Nothing was changed."));
+        }
     }
 
@@ -199,5 +204,7 @@
         // Remove ways from all relations so ways can be combined/split quietly
         ArrayList<RelationRole> relations = removeFromRelations(a);
-        if(!same) relations.addAll(removeFromRelations(b));
+        if(!same) {
+            relations.addAll(removeFromRelations(b));
+        }
 
         // Don't warn now, because it will really look corrupted
@@ -217,6 +224,7 @@
 
         // Delete the remaining inner ways
-        if(innerWays != null && innerWays.size() > 0)
+        if(innerWays != null && innerWays.size() > 0) {
             cmds.add(DeleteCommand.delete(Main.map.mapView.getEditLayer(), innerWays, true));
+        }
         commitCommands(marktr("Delete Ways that are not part of an inner multipolygon"));
 
@@ -228,11 +236,12 @@
         stripTags(newInnerWays);
         makeCommitsOneAction(
-            same
+                same
                 ? marktr("Joined self-overlapping area")
-                : marktr("Joined overlapping areas")
+                        : marktr("Joined overlapping areas")
         );
 
-        if(warnAboutRelations)
+        if(warnAboutRelations) {
             JOptionPane.showMessageDialog(Main.parent, tr("Some of the ways were part of relations that have been modified. Please verify no errors have been introduced."));
+        }
 
         return true;
@@ -254,6 +263,7 @@
         for (Way w : ways) {
             for (Entry<String,String> e : w.entrySet()) {
-                if (!props.containsKey(e.getKey()))
+                if (!props.containsKey(e.getKey())) {
                     props.put(e.getKey(), new TreeSet<String>());
+                }
                 props.get(e.getKey()).add(e.getValue());
             }
@@ -338,8 +348,8 @@
                     continue;
                 } else
-                if(a.getNode(i).equals(b.getNode(j+1)) || a.getNode(i+1).equals(b.getNode(j+1))) {
-                    nodes.add(b.getNode(j+1));
-                    continue;
-                }
+                    if(a.getNode(i).equals(b.getNode(j+1)) || a.getNode(i+1).equals(b.getNode(j+1))) {
+                        nodes.add(b.getNode(j+1));
+                        continue;
+                    }
                 LatLon intersection = getLineLineIntersection(
                         a.getNode(i)  .getEastNorth().east(), a.getNode(i)  .getEastNorth().north(),
@@ -347,5 +357,7 @@
                         b.getNode(j)  .getEastNorth().east(), b.getNode(j)  .getEastNorth().north(),
                         b.getNode(j+1).getEastNorth().east(), b.getNode(j+1).getEastNorth().north());
-                if(intersection == null) continue;
+                if(intersection == null) {
+                    continue;
+                }
 
                 // Create the node. Adding them to the ways must be delayed because we still loop over them
@@ -355,13 +367,16 @@
                 // The distance is needed to sort and add the nodes in direction of the way
                 nodesA.add(new NodeToSegs(i,  n, a.getNode(i).getCoor()));
-                if(same)
+                if(same) {
                     nodesA.add(new NodeToSegs(j,  n, a.getNode(j).getCoor()));
-                else
+                } else {
                     nodesB.add(new NodeToSegs(j,  n, b.getNode(j).getCoor()));
+                }
             }
         }
 
         addNodesToWay(a, nodesA);
-        if(!same) addNodesToWay(b, nodesB);
+        if(!same) {
+            addNodesToWay(b, nodesB);
+        }
 
         return nodes;
@@ -373,6 +388,6 @@
      */
     static private LatLon getLineLineIntersection(
-                double x1, double y1, double x2, double y2,
-                double x3, double y3, double x4, double y4) {
+            double x1, double y1, double x2, double y2,
+            double x3, double y3, double x4, double y4) {
 
         if (!Line2D.linesIntersect(x1, y1, x2, y2, x3, y3, x4, y4)) return null;
@@ -392,6 +407,6 @@
 
         return Main.proj.eastNorth2latlon(new EastNorth(
-            (b1*c2 - b2*c1)/det,
-            (a2*c1 -a1*c2)/det
+                (b1*c2 - b2*c1)/det,
+                (a2*c1 -a1*c2)/det
         ));
     }
@@ -421,13 +436,13 @@
     private void commitCommands(String description) {
         switch(cmds.size()) {
-            case 0:
-                return;
-            case 1:
-                Main.main.undoRedo.add(cmds.getFirst());
-                break;
-            default:
-                Command c = new SequenceCommand(tr(description), cmds);
-                Main.main.undoRedo.add(c);
-                break;
+        case 0:
+            return;
+        case 1:
+            Main.main.undoRedo.add(cmds.getFirst());
+            break;
+        default:
+            Command c = new SequenceCommand(tr(description), cmds);
+            Main.main.undoRedo.add(c);
+            break;
         }
 
@@ -444,7 +459,11 @@
         ArrayList<RelationRole> result = new ArrayList<RelationRole>();
         for (Relation r : Main.main.getCurrentDataSet().getRelations()) {
-            if (r.isDeleted() || r.incomplete) continue;
+            if (r.isDeleted() || r.isIncomplete()) {
+                continue;
+            }
             for (RelationMember rm : r.getMembers()) {
-                if (rm.getMember() != osm) continue;
+                if (rm.getMember() != osm) {
+                    continue;
+                }
 
                 Relation newRel = new Relation(r);
@@ -455,5 +474,7 @@
                 cmds.add(new ChangeCommand(r, newRel));
                 RelationRole saverel =  new RelationRole(r, rm.getRole());
-                if(!result.contains(saverel)) result.add(saverel);
+                if(!result.contains(saverel)) {
+                    result.add(saverel);
+                }
                 break;
             }
@@ -471,5 +492,7 @@
         ArrayList<Way> ways = new ArrayList<Way>();
         ways.add(a);
-        if(!a.equals(b)) ways.add(b);
+        if(!a.equals(b)) {
+            ways.add(b);
+        }
 
         List<OsmPrimitive> affected = new ArrayList<OsmPrimitive>();
@@ -493,5 +516,7 @@
         Collection<Way> result = new ArrayList<Way>();
         for(OsmPrimitive w: ways) {
-            if(w instanceof Way) result.add((Way) w);
+            if(w instanceof Way) {
+                result.add((Way) w);
+            }
         }
         return result;
@@ -505,5 +530,7 @@
     private Collection<Node> getNodesFromWays(Collection<Way> ways) {
         Collection<Node> allNodes = new ArrayList<Node>();
-        for(Way w: ways) allNodes.addAll(w.getNodes());
+        for(Way w: ways) {
+            allNodes.addAll(w.getNodes());
+        }
         return allNodes;
     }
@@ -521,5 +548,7 @@
         for(Way w: multigonWays) {
             Polygon poly = new Polygon();
-            for(Node n: (w).getNodes()) poly.addPoint(latlonToXY(n.getCoor().lat()), latlonToXY(n.getCoor().lon()));
+            for(Node n: (w).getNodes()) {
+                poly.addPoint(latlonToXY(n.getCoor().lat()), latlonToXY(n.getCoor().lon()));
+            }
 
             for(Node n: multigonNodes) {
@@ -546,6 +575,10 @@
     private void getWaysByNode(Collection<Way> innerWays, Collection<Way> w, Node n) {
         for(Way way : w) {
-            if(!(way).containsNode(n)) continue;
-            if(!innerWays.contains(way)) innerWays.add(way); // Will need this later for multigons
+            if(!(way).containsNode(n)) {
+                continue;
+            }
+            if(!innerWays.contains(way)) {
+                innerWays.add(way); // Will need this later for multigons
+            }
         }
     }
@@ -561,10 +594,13 @@
         for(Way w: multigonWays) {
             // Skip inner ways
-            if(innerWays.contains(w)) continue;
-
-            if(w.getNodesCount() <= 2)
+            if(innerWays.contains(w)) {
+                continue;
+            }
+
+            if(w.getNodesCount() <= 2) {
                 cmds.add(new DeleteCommand(w));
-            else
+            } else {
                 join.add(w);
+            }
         }
 
@@ -606,5 +642,5 @@
             }
             if(a.getNode(0).equals(b.getNode(0)) ||
-               a.getNode(a.getNodesCount()-1).equals(b.getNode(b.getNodesCount()-1))) {
+                    a.getNode(a.getNodesCount()-1).equals(b.getNode(b.getNodesCount()-1))) {
                 Main.main.getCurrentDataSet().setSelected(b);
                 new ReverseWayAction().actionPerformed(null);
@@ -644,8 +680,14 @@
             boolean hasInnerNodes = false;
             for(Node n : w.getNodes()) {
-                if(outerNodes.contains(n)) continue wayIterator;
-                if(!hasInnerNodes && innerNodes.contains(n)) hasInnerNodes = true;
-            }
-            if(!hasInnerNodes || w.getNodesCount() < 2) continue;
+                if(outerNodes.contains(n)) {
+                    continue wayIterator;
+                }
+                if(!hasInnerNodes && innerNodes.contains(n)) {
+                    hasInnerNodes = true;
+                }
+            }
+            if(!hasInnerNodes || w.getNodesCount() < 2) {
+                continue;
+            }
             possibleWays.add(w);
         }
@@ -671,5 +713,7 @@
                 for(Way w2 : possibleWays) {
                     // w2 cannot be closed, otherwise it would have been removed above
-                    if(!waysCanBeCombined(w1, w2)) continue;
+                    if(!waysCanBeCombined(w1, w2)) {
+                        continue;
+                    }
 
                     ArrayList<Way> joinThem = new ArrayList<Way>();
@@ -719,17 +763,23 @@
         List<Way> removables = new ArrayList<Way>();
         for(Way a : ways) {
-            if(a.isClosed()) continue;
+            if(a.isClosed()) {
+                continue;
+            }
             boolean connectedStart = false;
             boolean connectedEnd = false;
             for(Way b : ways) {
-                if(a.equals(b))
+                if(a.equals(b)) {
                     continue;
-                if(b.isFirstLastNode(a.firstNode()))
+                }
+                if(b.isFirstLastNode(a.firstNode())) {
                     connectedStart = true;
-                if(b.isFirstLastNode(a.lastNode()))
+                }
+                if(b.isFirstLastNode(a.lastNode())) {
                     connectedEnd = true;
-            }
-            if(!connectedStart || !connectedEnd)
+                }
+            }
+            if(!connectedStart || !connectedEnd) {
                 removables.add(a);
+            }
         }
         ways.removeAll(removables);
@@ -749,5 +799,7 @@
         for(Node n : w.getNodes()) {
             x.removeNode(n);
-            if(x.containsNode(n)) count++;
+            if(x.containsNode(n)) {
+                count++;
+            }
             if(count == 2) return true;
         }
@@ -784,6 +836,7 @@
         Relation newRel = new Relation();
         newRel.put("type", "multipolygon");
-        for(Way w : inner)
+        for(Way w : inner) {
             newRel.addMember(new RelationMember("inner", w));
+        }
         cmds.add(new AddCommand(newRel));
 
@@ -806,7 +859,7 @@
         for(RelationRole r : rels) {
             if( r.rel.get("type") != null &&
-                r.rel.get("type").equalsIgnoreCase("multipolygon") &&
-                r.role.equalsIgnoreCase("outer")
-              ) {
+                    r.rel.get("type").equalsIgnoreCase("multipolygon") &&
+                    r.role.equalsIgnoreCase("outer")
+            ) {
                 multiouters.add(r);
                 continue;
@@ -820,28 +873,30 @@
         Relation newRel = null;
         switch(multiouters.size()) {
-            case 0:
-                return;
-            case 1:
-                // Found only one to be part of a multipolygon relation, so just add it back as well
-                newRel = new Relation(multiouters.get(0).rel);
-                newRel.addMember(new RelationMember(multiouters.get(0).role, outer));
-                cmds.add(new ChangeCommand(multiouters.get(0).rel, newRel));
-                return;
-            default:
-                // Create a new relation with all previous members and (Way)outer as outer.
-                newRel = new Relation();
-                for(RelationRole r : multiouters) {
-                    // Add members
-                    for(RelationMember rm : r.rel.getMembers())
-                        if(!newRel.getMembers().contains(rm)) newRel.addMember(rm);
-                    // Add tags
-                    for (String key : r.rel.keySet()) {
-                        newRel.put(key, r.rel.get(key));
+        case 0:
+            return;
+        case 1:
+            // Found only one to be part of a multipolygon relation, so just add it back as well
+            newRel = new Relation(multiouters.get(0).rel);
+            newRel.addMember(new RelationMember(multiouters.get(0).role, outer));
+            cmds.add(new ChangeCommand(multiouters.get(0).rel, newRel));
+            return;
+        default:
+            // Create a new relation with all previous members and (Way)outer as outer.
+            newRel = new Relation();
+            for(RelationRole r : multiouters) {
+                // Add members
+                for(RelationMember rm : r.rel.getMembers())
+                    if(!newRel.getMembers().contains(rm)) {
+                        newRel.addMember(rm);
                     }
-                    // Delete old relation
-                    cmds.add(new DeleteCommand(r.rel));
-                }
-                newRel.addMember(new RelationMember("outer", outer));
-                cmds.add(new AddCommand(newRel));
+                // Add tags
+                for (String key : r.rel.keySet()) {
+                    newRel.put(key, r.rel.get(key));
+                }
+                // Delete old relation
+                cmds.add(new DeleteCommand(r.rel));
+            }
+            newRel.addMember(new RelationMember("outer", outer));
+            cmds.add(new AddCommand(newRel));
         }
     }
@@ -851,5 +906,7 @@
      */
     private void stripTags(Collection<Way> ways) {
-        for(Way w: ways) stripTags(w);
+        for(Way w: ways) {
+            stripTags(w);
+        }
         commitCommands(marktr("Remove tags from inner ways"));
     }
@@ -861,6 +918,7 @@
         if(x.getKeys() == null) return;
         Way y = new Way(x);
-        for (String key : x.keySet())
+        for (String key : x.keySet()) {
             y.remove(key);
+        }
         cmds.add(new ChangeCommand(x, y));
     }
@@ -875,9 +933,11 @@
         cmds.clear();
         int i = Math.max(ur.commands.size() - cmdsCount, 0);
-        for(; i < ur.commands.size(); i++)
+        for(; i < ur.commands.size(); i++) {
             cmds.add(ur.commands.get(i));
-
-        for(i = 0; i < cmds.size(); i++)
+        }
+
+        for(i = 0; i < cmds.size(); i++) {
             ur.undo();
+        }
 
         commitCommands(message == null ? marktr("Join Areas Function") : message);
Index: /trunk/src/org/openstreetmap/josm/actions/UnGlueAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/UnGlueAction.java	(revision 2577)
+++ /trunk/src/org/openstreetmap/josm/actions/UnGlueAction.java	(revision 2578)
@@ -90,5 +90,5 @@
                 int count = 0;
                 for (Way w : OsmPrimitive.getFilteredList(n.getReferrers(), Way.class)) {
-                    if (w.isDeleted() || w.incomplete) {
+                    if (w.isDeleted() || w.isIncomplete()) {
                         continue;
                     }
@@ -308,5 +308,5 @@
         HashSet<String> rolesToReAdd = null;
         for (Relation r : OsmPrimitive.getFilteredList(originalNode.getReferrers(), Relation.class)) {
-            if (r.isDeleted() || r.incomplete) {
+            if (r.isDeleted() || r.isIncomplete()) {
                 continue;
             }
@@ -352,5 +352,5 @@
             // modify all ways containing the nodes
             for (Way w : OsmPrimitive.getFilteredList(selectedNode.getReferrers(), Way.class)) {
-                if (w.isDeleted() || w.incomplete) {
+                if (w.isDeleted() || w.isIncomplete()) {
                     continue;
                 }
Index: /trunk/src/org/openstreetmap/josm/actions/UpdateSelectionAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/UpdateSelectionAction.java	(revision 2577)
+++ /trunk/src/org/openstreetmap/josm/actions/UpdateSelectionAction.java	(revision 2578)
@@ -10,5 +10,4 @@
 import java.util.Collection;
 import java.util.Collections;
-import java.util.logging.Logger;
 
 import javax.swing.JOptionPane;
@@ -139,5 +138,5 @@
      */
     static class UpdatePrimitivesTask extends PleaseWaitRunnable {
-        static private final Logger logger = Logger.getLogger(UpdatePrimitivesTask.class.getName());
+        //static private final Logger logger = Logger.getLogger(UpdatePrimitivesTask.class.getName());
 
         private DataSet ds;
@@ -228,5 +227,5 @@
                 //
                 for (Way w : ds.getWays()) {
-                    if (w.incomplete) {
+                    if (w.isIncomplete()) {
                         OsmServerObjectReader reader = new OsmServerObjectReader(w.getId(), OsmPrimitiveType.WAY, true /* full */);
                         theirDataSet = reader.parseOsm(progressMonitor.createSubTaskMonitor(ProgressMonitor.ALL_TICKS, false));
Index: /trunk/src/org/openstreetmap/josm/actions/UploadSelectionAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/UploadSelectionAction.java	(revision 2577)
+++ /trunk/src/org/openstreetmap/josm/actions/UploadSelectionAction.java	(revision 2578)
@@ -11,5 +11,4 @@
 import java.util.Set;
 import java.util.Stack;
-import java.util.logging.Logger;
 
 import javax.swing.JOptionPane;
@@ -39,5 +38,5 @@
  */
 public class UploadSelectionAction extends JosmAction{
-    static private Logger logger = Logger.getLogger(UploadSelectionAction.class.getName());
+    //static private Logger logger = Logger.getLogger(UploadSelectionAction.class.getName());
 
     public UploadSelectionAction() {
@@ -90,5 +89,5 @@
             if (p.isNew()) {
                 ret.add(p);
-            } else if (p.isVisible() && p.isModified() && !p.incomplete) {
+            } else if (p.isVisible() && p.isModified() && !p.isIncomplete()) {
                 ret.add(p);
             }
Index: /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTaskList.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTaskList.java	(revision 2577)
+++ /trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTaskList.java	(revision 2578)
@@ -107,15 +107,15 @@
         HashSet<OsmPrimitive> ret = new HashSet<OsmPrimitive>();
         for (OsmPrimitive primitive : ds.getNodes()) {
-            if (!primitive.incomplete && !primitive.isNew()) {
+            if (!primitive.isIncomplete() && !primitive.isNew()) {
                 ret.add(primitive);
             }
         }
         for (OsmPrimitive primitive : ds.getWays()) {
-            if (!primitive.incomplete && !primitive.isNew()) {
+            if (!primitive.isIncomplete() && !primitive.isNew()) {
                 ret.add(primitive);
             }
         }
         for (OsmPrimitive primitive : ds.getRelations()) {
-            if (!primitive.incomplete && !primitive.isNew()) {
+            if (!primitive.isIncomplete() && !primitive.isNew()) {
                 ret.add(primitive);
             }
Index: /trunk/src/org/openstreetmap/josm/actions/search/SearchCompiler.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/search/SearchCompiler.java	(revision 2577)
+++ /trunk/src/org/openstreetmap/josm/actions/search/SearchCompiler.java	(revision 2578)
@@ -487,5 +487,5 @@
     private static class Incomplete extends Match {
         @Override public boolean match(OsmPrimitive osm) {
-            return osm.incomplete;
+            return osm.isIncomplete();
         }
         @Override public String toString() {return "incomplete";}
Index: /trunk/src/org/openstreetmap/josm/data/osm/DataSet.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/DataSet.java	(revision 2577)
+++ /trunk/src/org/openstreetmap/josm/data/osm/DataSet.java	(revision 2578)
@@ -159,5 +159,5 @@
         Collection<OsmPrimitive> o = new LinkedList<OsmPrimitive>();
         for (OsmPrimitive osm : allPrimitives())
-            if (osm.isVisible() && !osm.isDeleted() && !osm.incomplete) {
+            if (osm.isVisible() && !osm.isDeleted() && !osm.isIncomplete()) {
                 o.add(osm);
             }
@@ -168,5 +168,5 @@
         Collection<OsmPrimitive> o = new LinkedList<OsmPrimitive>();
         for (OsmPrimitive osm : allPrimitives())
-            if (osm.isVisible() && !osm.isDeleted() && !osm.incomplete && !(osm instanceof Relation)) {
+            if (osm.isVisible() && !osm.isDeleted() && !osm.isIncomplete() && !(osm instanceof Relation)) {
                 o.add(osm);
             }
Index: /trunk/src/org/openstreetmap/josm/data/osm/DataSetMerger.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/DataSetMerger.java	(revision 2577)
+++ /trunk/src/org/openstreetmap/josm/data/osm/DataSetMerger.java	(revision 2578)
@@ -145,10 +145,10 @@
         if (myWay == null)
             throw new RuntimeException(tr("Missing merge target for way with id {0}", other.getUniqueId()));
-        if (!myWay.incomplete)return;
-        if (myWay.incomplete && other.getNodesCount() == 0) return;
+        if (!myWay.isIncomplete())return;
+        if (myWay.isIncomplete() && other.getNodesCount() == 0) return;
         for (Node n: myWay.getNodes()) {
-            if (n.incomplete) return;
-        }
-        myWay.incomplete = false;
+            if (n.isIncomplete()) return;
+        }
+        myWay.setIncomplete(false);
     }
 
@@ -167,16 +167,16 @@
         if (myNode == null)
             throw new RuntimeException(tr("Missing merge target for node with id {0}", other.getUniqueId()));
-        if (myNode.incomplete || myNode.isDeleted() || !myNode.isVisible()) return;
+        if (myNode.isIncomplete() || myNode.isDeleted() || !myNode.isVisible()) return;
         wayloop: for (Way w: OsmPrimitive.getFilteredList(myNode.getReferrers(), Way.class)) {
-            if (w.isDeleted() || ! w.isVisible() || ! w.incomplete) {
+            if (w.isDeleted() || ! w.isVisible() || ! w.isIncomplete()) {
                 continue;
             }
             for (Node n: w.getNodes()) {
-                if (n.incomplete) {
+                if (n.isIncomplete()) {
                     continue wayloop;
                 }
             }
             // all nodes are complete - set the way complete too
-            w.incomplete = false;
+            w.setIncomplete(false);
         }
     }
@@ -306,5 +306,5 @@
             //
             conflicts.add(target,source);
-        } else if (target.incomplete && !source.incomplete) {
+        } else if (target.isIncomplete() && !source.isIncomplete()) {
             // target is incomplete, source completes it
             // => merge source into target
@@ -312,9 +312,9 @@
             target.mergeFrom(source);
             objectsWithChildrenToMerge.add(source.getPrimitiveId());
-        } else if (!target.incomplete && source.incomplete) {
+        } else if (!target.isIncomplete() && source.isIncomplete()) {
             // target is complete and source is incomplete
             // => keep target, it has more information already
             //
-        } else if (target.incomplete && source.incomplete) {
+        } else if (target.isIncomplete() && source.isIncomplete()) {
             // target and source are incomplete. Doesn't matter which one to
             // take. We take target.
Index: /trunk/src/org/openstreetmap/josm/data/osm/DatasetConsistencyTest.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/DatasetConsistencyTest.java	(revision 2577)
+++ /trunk/src/org/openstreetmap/josm/data/osm/DatasetConsistencyTest.java	(revision 2578)
@@ -48,7 +48,7 @@
     private void checkCompleteWaysWithIncompleteNodes() {
         for (Way way:dataSet.getWays()) {
-            if (!way.incomplete) {
+            if (!way.isIncomplete()) {
                 for (Node node:way.getNodes()) {
-                    if (node.incomplete) {
+                    if (node.isIncomplete()) {
                         writer.println(String.format("%s is complete but contains incomplete node '%s'", way, node));
                     }
@@ -60,5 +60,5 @@
     private void checkCompleteNodesWithoutCoordinates() {
         for (Node node:dataSet.getNodes()) {
-            if (!node.incomplete && (node.getCoor() == null || node.getEastNorth() == null)) {
+            if (!node.isIncomplete() && (node.getCoor() == null || node.getEastNorth() == null)) {
                 writer.println(String.format("%s is not incomplete but has null coordinates", node));
             }
@@ -68,5 +68,5 @@
     private void searchNodes() {
         for (Node n:dataSet.getNodes()) {
-            if (!n.incomplete) {
+            if (!n.isIncomplete()) {
                 LatLon c = n.getCoor();
                 BBox box = new BBox(new LatLon(c.lat() - 0.0001, c.lon() - 0.0001), new LatLon(c.lat() + 0.0001, c.lon() + 0.0001));
@@ -80,5 +80,5 @@
     private void searchWays() {
         for (Way w:dataSet.getWays()) {
-            if (!w.incomplete && !dataSet.searchWays(w.getBBox()).contains(w)) {
+            if (!w.isIncomplete() && !dataSet.searchWays(w.getBBox()).contains(w)) {
                 writer.println(String.format("%s not found using Dataset.searchWays()", w));
             }
Index: /trunk/src/org/openstreetmap/josm/data/osm/Node.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/Node.java	(revision 2577)
+++ /trunk/src/org/openstreetmap/josm/data/osm/Node.java	(revision 2578)
@@ -123,5 +123,5 @@
     public void mergeFrom(OsmPrimitive other) {
         super.mergeFrom(other);
-        if (!other.incomplete) {
+        if (!other.isIncomplete()) {
             setCoor(new LatLon(((Node)other).coor));
         }
Index: /trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java	(revision 2577)
+++ /trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java	(revision 2578)
@@ -229,5 +229,5 @@
      * and type is known (type is the objects instance class)
      */
-    public boolean incomplete = false;
+    private boolean incomplete = false;
 
     /**
@@ -259,5 +259,5 @@
         }
         this.version = 0;
-        this.incomplete = id > 0;
+        this.setIncomplete(id > 0);
     }
 
@@ -357,5 +357,5 @@
      */
     public boolean isUsable() {
-        return !isDeleted() && !incomplete && !isDisabled();
+        return !isDeleted() && !isIncomplete() && !isDisabled();
     }
 
@@ -451,5 +451,5 @@
         this.id = id;
         this.version = version;
-        this.incomplete = false;
+        this.setIncomplete(false);
     }
 
@@ -468,5 +468,5 @@
         this.id = generateUniqueId();
         this.version = 0;
-        this.incomplete = false;
+        this.setIncomplete(false);
     }
 
@@ -913,5 +913,5 @@
         timestamp = osm.timestamp;
         version = osm.version;
-        incomplete = osm.incomplete;
+        setIncomplete(osm.isIncomplete());
         flags = osm.flags;
         user= osm.user;
@@ -940,5 +940,5 @@
         timestamp = other.timestamp;
         version = other.version;
-        incomplete = other.incomplete;
+        setIncomplete(other.isIncomplete());
         flags = other.flags;
         user= other.user;
@@ -960,5 +960,5 @@
         if (!isNew() &&  id != other.id)
             return false;
-        if (incomplete && ! other.incomplete || !incomplete  && other.incomplete)
+        if (isIncomplete() && ! other.isIncomplete() || !isIncomplete()  && other.isIncomplete())
             return false;
         // can't do an equals check on the internal keys array because it is not ordered
@@ -1151,3 +1151,11 @@
         return new SimplePrimitiveId(getUniqueId(), getType());
     }
+
+    public void setIncomplete(boolean incomplete) {
+        this.incomplete = incomplete;
+    }
+
+    public boolean isIncomplete() {
+        return incomplete;
+    }
 }
Index: /trunk/src/org/openstreetmap/josm/data/osm/Relation.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/Relation.java	(revision 2577)
+++ /trunk/src/org/openstreetmap/josm/data/osm/Relation.java	(revision 2578)
@@ -243,9 +243,9 @@
 
     public RelationMember firstMember() {
-        if (incomplete) return null;
+        if (isIncomplete()) return null;
         return (members.size() == 0) ? null : members.get(0);
     }
     public RelationMember lastMember() {
-        if (incomplete) return null;
+        if (isIncomplete()) return null;
         return (members.size() == 0) ? null : members.get(members.size() -1);
     }
Index: /trunk/src/org/openstreetmap/josm/data/osm/Way.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/Way.java	(revision 2577)
+++ /trunk/src/org/openstreetmap/josm/data/osm/Way.java	(revision 2578)
@@ -116,5 +116,5 @@
     public ArrayList<Pair<Node,Node>> getNodePairs(boolean sort) {
         ArrayList<Pair<Node,Node>> chunkSet = new ArrayList<Pair<Node,Node>>();
-        if (incomplete) return chunkSet;
+        if (isIncomplete()) return chunkSet;
         Node lastN = null;
         for (Node n : this.nodes) {
@@ -219,5 +219,5 @@
 
     @Override public String toString() {
-        String nodesDesc = incomplete?"(incomplete)":"nodes=" + Arrays.toString(nodes);
+        String nodesDesc = isIncomplete()?"(incomplete)":"nodes=" + Arrays.toString(nodes);
         return "{Way id=" + getUniqueId() + " version=" + getVersion()+ " " + getFlagsAsString()  + " " + nodesDesc + "}";
     }
@@ -245,5 +245,5 @@
 
     public void removeNode(Node n) {
-        if (incomplete) return;
+        if (isIncomplete()) return;
         boolean closed = (lastNode() == n && firstNode() == n);
         int i;
@@ -262,5 +262,5 @@
 
     public void removeNodes(Collection<? extends OsmPrimitive> selection) {
-        if (incomplete) return;
+        if (isIncomplete()) return;
         for(OsmPrimitive p : selection) {
             if (p instanceof Node) {
@@ -279,5 +279,5 @@
     public void addNode(Node n) throws IllegalStateException {
         if (n==null) return;
-        if (incomplete)
+        if (isIncomplete())
             throw new IllegalStateException(tr("Cannot add node {0} to incomplete way {1}.", n.getId(), getId()));
         clearCached();
@@ -301,5 +301,5 @@
     public void addNode(int offs, Node n) throws IllegalStateException, IndexOutOfBoundsException {
         if (n==null) return;
-        if (incomplete)
+        if (isIncomplete())
             throw new IllegalStateException(tr("Cannot add node {0} to incomplete way {1}.", n.getId(), getId()));
         clearCached();
@@ -327,20 +327,20 @@
 
     public boolean isClosed() {
-        if (incomplete) return false;
+        if (isIncomplete()) return false;
         return nodes.length >= 3 && lastNode() == firstNode();
     }
 
     public Node lastNode() {
-        if (incomplete || nodes.length == 0) return null;
+        if (isIncomplete() || nodes.length == 0) return null;
         return nodes[nodes.length-1];
     }
 
     public Node firstNode() {
-        if (incomplete || nodes.length == 0) return null;
+        if (isIncomplete() || nodes.length == 0) return null;
         return nodes[0];
     }
 
     public boolean isFirstLastNode(Node n) {
-        if (incomplete || nodes.length == 0) return false;
+        if (isIncomplete() || nodes.length == 0) return false;
         return n == firstNode() || n == lastNode();
     }
Index: /trunk/src/org/openstreetmap/josm/data/osm/visitor/AllNodesVisitor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/visitor/AllNodesVisitor.java	(revision 2577)
+++ /trunk/src/org/openstreetmap/josm/data/osm/visitor/AllNodesVisitor.java	(revision 2578)
@@ -34,5 +34,5 @@
      */
     public void visit(Way w) {
-        if (w.incomplete) return;
+        if (w.isIncomplete()) return;
         for (Node n : w.getNodes())
             visit(n);
Index: /trunk/src/org/openstreetmap/josm/data/osm/visitor/BoundingXYVisitor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/visitor/BoundingXYVisitor.java	(revision 2577)
+++ /trunk/src/org/openstreetmap/josm/data/osm/visitor/BoundingXYVisitor.java	(revision 2578)
@@ -28,5 +28,5 @@
 
     public void visit(Way w) {
-        if (w.incomplete) return;
+        if (w.isIncomplete()) return;
         for (Node n : w.getNodes())
             visit(n);
Index: /trunk/src/org/openstreetmap/josm/data/osm/visitor/MapPaintVisitor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/visitor/MapPaintVisitor.java	(revision 2577)
+++ /trunk/src/org/openstreetmap/josm/data/osm/visitor/MapPaintVisitor.java	(revision 2578)
@@ -563,5 +563,5 @@
                 putError(r, tr("Deleted member ''{0}'' in relation.",
                         m.getMember().getDisplayName(DefaultNameFormatter.getInstance())), true);
-            } else if(m.getMember().incomplete)
+            } else if(m.getMember().isIncomplete())
                 return;
             else
@@ -922,5 +922,5 @@
                 putError(r, tr("Deleted member ''{0}'' in relation.",
                         m.getMember().getDisplayName(DefaultNameFormatter.getInstance())), true);
-            } else if(m.getMember().incomplete) {
+            } else if(m.getMember().isIncomplete()) {
                 incomplete = true;
             } else {
@@ -1383,5 +1383,5 @@
     boolean drawable(OsmPrimitive osm)
     {
-        return !osm.isDeleted() && !osm.isFiltered() && !osm.incomplete;
+        return !osm.isDeleted() && !osm.isFiltered() && !osm.isIncomplete();
     }
 
@@ -1545,5 +1545,5 @@
         //profilerN = 0;
         for (final OsmPrimitive osm : data.getSelected()) {
-            if (!osm.incomplete && !osm.isDeleted() && !(osm instanceof Node)
+            if (!osm.isIncomplete() && !osm.isDeleted() && !(osm instanceof Node)
                     && osm.mappaintDrawnCode != paintid
             ) {
@@ -1584,5 +1584,5 @@
         //profilerN = 0;
         for (final Node osm: data.searchNodes(bbox)) {
-            if (!osm.incomplete && !osm.isDeleted() && (data.isSelected(osm) || !osm.isFiltered())
+            if (!osm.isIncomplete() && !osm.isDeleted() && (data.isSelected(osm) || !osm.isFiltered())
                     && osm.mappaintDrawnCode != paintid)
             {
Index: /trunk/src/org/openstreetmap/josm/data/osm/visitor/MergeSourceBuildingVisitor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/visitor/MergeSourceBuildingVisitor.java	(revision 2577)
+++ /trunk/src/org/openstreetmap/josm/data/osm/visitor/MergeSourceBuildingVisitor.java	(revision 2578)
@@ -130,5 +130,5 @@
             return;
         Node clone = new Node(n);
-        clone.incomplete = true;
+        clone.setIncomplete(true);
         mappedPrimitives.put(n, clone);
     }
@@ -139,5 +139,5 @@
         Way clone = new Way(w);
         clone.setNodes(null);
-        clone.incomplete = true;
+        clone.setIncomplete(true);
         mappedPrimitives.put(w, clone);
     }
@@ -152,5 +152,5 @@
         }
         clone.setMembers(null);
-        clone.incomplete = true;
+        clone.setIncomplete(true);
         if (! isAlreadyRemembered(r)) {
             mappedPrimitives.put(r, clone);
Index: /trunk/src/org/openstreetmap/josm/data/osm/visitor/SimplePaintVisitor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/visitor/SimplePaintVisitor.java	(revision 2577)
+++ /trunk/src/org/openstreetmap/josm/data/osm/visitor/SimplePaintVisitor.java	(revision 2578)
@@ -249,5 +249,5 @@
      */
     public void visit(Node n) {
-        if (n.incomplete) return;
+        if (n.isIncomplete()) return;
 
         if (inactive || n.isDisabled()) {
@@ -301,5 +301,5 @@
      */
     public void visit(Way w) {
-        if (w.incomplete || w.getNodesCount() < 2)
+        if (w.isIncomplete() || w.getNodesCount() < 2)
             return;
 
@@ -344,5 +344,5 @@
             4, BasicStroke.CAP_SQUARE, BasicStroke.JOIN_BEVEL);
     public void visit(Relation r) {
-        if (r.incomplete) return;
+        if (r.isIncomplete()) return;
 
         Color col;
@@ -357,5 +357,5 @@
 
         for (RelationMember m : r.getMembers()) {
-            if (m.getMember().incomplete || m.getMember().isDeleted()) {
+            if (m.getMember().isIncomplete() || m.getMember().isDeleted()) {
                 continue;
             }
@@ -374,5 +374,5 @@
                 boolean first = true;
                 for (Node n : m.getWay().getNodes()) {
-                    if (n.incomplete || n.isDeleted()) {
+                    if (n.isIncomplete() || n.isDeleted()) {
                         continue;
                     }
Index: /trunk/src/org/openstreetmap/josm/gui/DefaultNameFormatter.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/DefaultNameFormatter.java	(revision 2577)
+++ /trunk/src/org/openstreetmap/josm/gui/DefaultNameFormatter.java	(revision 2578)
@@ -88,5 +88,5 @@
     public String format(Node node) {
         String name = "";
-        if (node.incomplete) {
+        if (node.isIncomplete()) {
             name = tr("incomplete");
         } else {
@@ -113,5 +113,5 @@
     public String format(Way way) {
         String name = "";
-        if (way.incomplete) {
+        if (way.isIncomplete()) {
             name = tr("incomplete");
         } else {
@@ -151,5 +151,5 @@
     public String format(Relation relation) {
         String name;
-        if (relation.incomplete) {
+        if (relation.isIncomplete()) {
             name = tr("incomplete");
         } else {
Index: /trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java	(revision 2577)
+++ /trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java	(revision 2578)
@@ -371,5 +371,5 @@
             for (Node n : w.getNodes()) {
                 i++;
-                if (n.isDeleted() || n.incomplete) {
+                if (n.isDeleted() || n.isIncomplete()) {
                     continue;
                 }
Index: /trunk/src/org/openstreetmap/josm/gui/SelectionManager.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/SelectionManager.java	(revision 2577)
+++ /trunk/src/org/openstreetmap/josm/gui/SelectionManager.java	(revision 2578)
@@ -296,5 +296,5 @@
                 if (alt) {
                     for (Node n : w.getNodes()) {
-                        if (!n.incomplete && r.contains(nc.getPoint(n))) {
+                        if (!n.isIncomplete() && r.contains(nc.getPoint(n))) {
                             selection.add(w);
                             break;
@@ -304,5 +304,5 @@
                     boolean allIn = true;
                     for (Node n : w.getNodes()) {
-                        if (!n.incomplete && !r.contains(nc.getPoint(n))) {
+                        if (!n.isIncomplete() && !r.contains(nc.getPoint(n))) {
                             allIn = false;
                             break;
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/PropertiesDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/PropertiesDialog.java	(revision 2577)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/PropertiesDialog.java	(revision 2578)
@@ -750,5 +750,5 @@
         if (Main.main.getCurrentDataSet() != null) {
             for (Relation r : Main.main.getCurrentDataSet().getRelations()) {
-                if (!r.isFiltered() && !r.incomplete && !r.isDeleted()) {
+                if (!r.isFiltered() && !r.isIncomplete() && !r.isDeleted()) {
                     for (RelationMember m : r.getMembers()) {
                         if (newSelection.contains(m.getMember())) {
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java	(revision 2577)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java	(revision 2578)
@@ -534,5 +534,5 @@
             }
             for (Relation r: relations) {
-                if (! r.isDeleted() && r.isVisible() && !r.incomplete) {
+                if (! r.isDeleted() && r.isVisible() && !r.isIncomplete()) {
                     this.relations.add(r);
                 }
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/ChildRelationBrowser.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/ChildRelationBrowser.java	(revision 2577)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/ChildRelationBrowser.java	(revision 2578)
@@ -16,5 +16,4 @@
 import java.util.Set;
 import java.util.Stack;
-import java.util.logging.Logger;
 
 import javax.swing.AbstractAction;
@@ -54,5 +53,5 @@
  */
 public class ChildRelationBrowser extends JPanel {
-    static private final Logger logger = Logger.getLogger(ChildRelationBrowser.class.getName());
+    //static private final Logger logger = Logger.getLogger(ChildRelationBrowser.class.getName());
 
     /** the tree with relation children */
@@ -194,5 +193,5 @@
             for (int i=0; i < Math.min(selection.length,10);i++) {
                 Relation r = (Relation)selection[i].getLastPathComponent();
-                if (r.incomplete) {
+                if (r.isIncomplete()) {
                     continue;
                 }
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java	(revision 2577)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java	(revision 2578)
@@ -25,5 +25,4 @@
 import java.util.Iterator;
 import java.util.List;
-import java.util.logging.Logger;
 
 import javax.swing.AbstractAction;
@@ -76,6 +75,5 @@
  */
 public class GenericRelationEditor extends RelationEditor  {
-
-    static private final Logger logger = Logger.getLogger(GenericRelationEditor.class.getName());
+    //static private final Logger logger = Logger.getLogger(GenericRelationEditor.class.getName());
 
     /** the tag table and its model */
@@ -1382,5 +1380,5 @@
                 return;
             Relation r = (Relation) primitive;
-            if (r.incomplete)
+            if (r.isIncomplete())
                 return;
 
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java	(revision 2577)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java	(revision 2578)
@@ -319,5 +319,5 @@
         Set<OsmPrimitive> ret = new HashSet<OsmPrimitive>();
         for (RelationMember member : members) {
-            if (member.getMember().incomplete) {
+            if (member.getMember().isIncomplete()) {
                 ret.add(member.getMember());
             }
@@ -334,5 +334,5 @@
         Set<OsmPrimitive> ret = new HashSet<OsmPrimitive>();
         for (RelationMember member : getSelectedMembers()) {
-            if (member.getMember().incomplete) {
+            if (member.getMember().isIncomplete()) {
                 ret.add(member.getMember());
             }
@@ -348,5 +348,5 @@
     public boolean hasIncompleteMembers() {
         for (RelationMember member : members) {
-            if (member.getMember().incomplete)
+            if (member.getMember().isIncomplete())
                 return true;
         }
@@ -361,5 +361,5 @@
     public boolean hasIncompleteSelectedMembers() {
         for (RelationMember member : getSelectedMembers()) {
-            if (member.getMember().incomplete)
+            if (member.getMember().isIncomplete())
                 return true;
         }
@@ -577,5 +577,5 @@
             return false;
         Relation r = member.getRelation();
-        return !r.incomplete;
+        return !r.isIncomplete();
     }
 
@@ -881,5 +881,5 @@
 
             Way w = m.getWay();
-            if (w == null || w.incomplete) {
+            if (w == null || w.isIncomplete()) {
                 con.set(i, new WayConnectionType());
                 resetFirstGoupIdx = true;
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/RelationNodeMap.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/RelationNodeMap.java	(revision 2577)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/RelationNodeMap.java	(revision 2578)
@@ -57,5 +57,5 @@
         for (int i = 0; i < members.size(); ++i) {
             RelationMember m = members.get(i);
-            if (m.getMember().incomplete || !m.isWay())
+            if (m.getMember().isIncomplete() || !m.isWay())
             {
                 notSortable.add(i);
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/RelationTree.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/RelationTree.java	(revision 2577)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/RelationTree.java	(revision 2578)
@@ -91,5 +91,5 @@
             TreePath path  = event.getPath();
             Relation parent = (Relation)event.getPath().getLastPathComponent();
-            if (! parent.incomplete || parent.isNew())
+            if (! parent.isIncomplete() || parent.isNew())
                 // we don't load complete  or new relations
                 return;
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/RelationTreeModel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/RelationTreeModel.java	(revision 2577)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/RelationTreeModel.java	(revision 2578)
@@ -210,5 +210,5 @@
     public boolean isLeaf(Object node) {
         Relation r = (Relation)node;
-        if (r.incomplete) return false;
+        if (r.isIncomplete()) return false;
         return getNumRelationChildren(r) == 0;
     }
Index: /trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 2577)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 2578)
@@ -604,5 +604,5 @@
         // records them?
         for (Node n : data.getNodes()) {
-            if (n.incomplete || n.isDeleted() || doneNodes.contains(n)) {
+            if (n.isIncomplete() || n.isDeleted() || doneNodes.contains(n)) {
                 continue;
             }
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletionCache.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletionCache.java	(revision 2577)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletionCache.java	(revision 2578)
@@ -149,5 +149,5 @@
         }
         for (Relation relation : layer.data.getRelations()) {
-            if (relation.incomplete || relation.isDeleted()) {
+            if (relation.isIncomplete() || relation.isDeleted()) {
                 continue;
             }
Index: /trunk/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java	(revision 2577)
+++ /trunk/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java	(revision 2578)
@@ -378,7 +378,7 @@
     protected void rememberNodesOfIncompleteWaysToLoad(DataSet from) {
         for (Way w: from.getWays()) {
-            if (w.incomplete) {
+            if (w.isIncomplete()) {
                 for (Node n: w.getNodes()) {
-                    if (n.incomplete) {
+                    if (n.isIncomplete()) {
                         nodes.add(n.getId());
                     }
Index: /trunk/src/org/openstreetmap/josm/io/OsmReader.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/OsmReader.java	(revision 2577)
+++ /trunk/src/org/openstreetmap/josm/io/OsmReader.java	(revision 2578)
@@ -448,8 +448,8 @@
                             "loaded data and is therefore incomplete too.", externalWayId, w.getNodesCount()));
                 }
-                w.incomplete = true;
+                w.setIncomplete(true);
                 ds.addPrimitive(w);
             } else {
-                w.incomplete = false;
+                w.setIncomplete(false);
                 ds.addPrimitive(w);
             }
Index: /trunk/src/org/openstreetmap/josm/io/OsmServerBackreferenceReader.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/OsmServerBackreferenceReader.java	(revision 2577)
+++ /trunk/src/org/openstreetmap/josm/io/OsmServerBackreferenceReader.java	(revision 2578)
@@ -224,5 +224,5 @@
             if (isReadFull() ||primitiveType.equals(OsmPrimitiveType.NODE)) {
                 for (Way way: waysToCheck) {
-                    if (!way.isNew() && way.incomplete) {
+                    if (!way.isNew() && way.isIncomplete()) {
                         OsmServerObjectReader reader = new OsmServerObjectReader(way.getId(), OsmPrimitiveType.from(way), true /* read full */);
                         DataSet wayDs = reader.parseOsm(progressMonitor.createSubTaskMonitor(1, false));
@@ -235,5 +235,5 @@
                 Collection<Relation> relationsToCheck  = new ArrayList<Relation>(ds.getRelations());
                 for (Relation relation: relationsToCheck) {
-                    if (!relation.isNew() && relation.incomplete) {
+                    if (!relation.isNew() && relation.isIncomplete()) {
                         OsmServerObjectReader reader = new OsmServerObjectReader(relation.getId(), OsmPrimitiveType.from(relation), true /* read full */);
                         DataSet wayDs = reader.parseOsm(progressMonitor.createSubTaskMonitor(1, false));
Index: /trunk/src/org/openstreetmap/josm/io/OsmWriter.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/OsmWriter.java	(revision 2577)
+++ /trunk/src/org/openstreetmap/josm/io/OsmWriter.java	(revision 2578)
@@ -105,5 +105,5 @@
 
     public void visit(Node n) {
-        if (n.incomplete) return;
+        if (n.isIncomplete()) return;
         addCommon(n, "node");
         out.print(" lat='"+n.getCoor().lat()+"' lon='"+n.getCoor().lon()+"'");
@@ -116,5 +116,5 @@
 
     public void visit(Way w) {
-        if (w.incomplete) return;
+        if (w.isIncomplete()) return;
         addCommon(w, "way");
         if (!withBody) {
@@ -130,5 +130,5 @@
 
     public void visit(Relation e) {
-        if (e.incomplete) return;
+        if (e.isIncomplete()) return;
         addCommon(e, "relation");
         if (!withBody) {
Index: /trunk/test/functional/org/openstreetmap/josm/io/OsmServerBackreferenceReaderTest.java
===================================================================
--- /trunk/test/functional/org/openstreetmap/josm/io/OsmServerBackreferenceReaderTest.java	(revision 2577)
+++ /trunk/test/functional/org/openstreetmap/josm/io/OsmServerBackreferenceReaderTest.java	(revision 2578)
@@ -255,5 +255,5 @@
         for (Way way : referers.getWays()) {
             assertEquals(w.getId(), way.getId());
-            assertEquals(false, way.incomplete);
+            assertEquals(false, way.isIncomplete());
         }
     }
@@ -274,5 +274,5 @@
         for (Way way : referers.getWays()) {
             assertEquals(w.getId(), way.getId());
-            assertEquals(false, way.incomplete);
+            assertEquals(false, way.isIncomplete());
             assertEquals(10, w.getNodesCount());
         }
@@ -292,5 +292,5 @@
         assertEquals(6, referers.getWays().size());  // 6 ways referred by two relations
         for (Way w1 : referers.getWays()) {
-            assertEquals(true, w1.incomplete);
+            assertEquals(true, w1.isIncomplete());
         }
         assertEquals(2, referers.getRelations().size());  // two relations referring to w
@@ -298,7 +298,7 @@
         Relation r = lookupRelation(referers, 0);
         assertNotNull(r);
-        assertEquals(false, r.incomplete);
+        assertEquals(false, r.isIncomplete());
         r = lookupRelation(referers, 1);
-        assertEquals(false, r.incomplete);
+        assertEquals(false, r.isIncomplete());
     }
 
@@ -315,5 +315,5 @@
         assertEquals(6, referers.getWays().size());  // 6 ways referred by two relations
         for (Way w1 : referers.getWays()) {
-            assertEquals(false, w1.incomplete);
+            assertEquals(false, w1.isIncomplete());
         }
         assertEquals(2, referers.getRelations().size());  // two relations referring to
@@ -332,7 +332,7 @@
         Relation r = lookupRelation(referers, 0);
         assertNotNull(r);
-        assertEquals(false, r.incomplete);
+        assertEquals(false, r.isIncomplete());
         r = lookupRelation(referers, 1);
-        assertEquals(false, r.incomplete);
+        assertEquals(false, r.isIncomplete());
     }
 
@@ -352,22 +352,22 @@
         r = lookupRelation(referers, 6);
         assertNotNull(r);
-        assertEquals(false, r.incomplete);
+        assertEquals(false, r.isIncomplete());
         referringRelationsIds.add(r.getId());
         r = lookupRelation(referers, 7);
         assertNotNull(r);
-        assertEquals(false, r.incomplete);
+        assertEquals(false, r.isIncomplete());
         referringRelationsIds.add(r.getId());
         r = lookupRelation(referers, 8);
         assertNotNull(r);
-        assertEquals(false, r.incomplete);
+        assertEquals(false, r.isIncomplete());
         referringRelationsIds.add(r.getId());
         r = lookupRelation(referers, 9);
         assertNotNull(r);
-        assertEquals(false, r.incomplete);
+        assertEquals(false, r.isIncomplete());
         referringRelationsIds.add(r.getId());
 
         for (Relation r1 : referers.getRelations()) {
             if (!referringRelationsIds.contains(r1.getId())) {
-                assertEquals(true, r1.incomplete);
+                assertEquals(true, r1.isIncomplete());
             }
         }
@@ -401,5 +401,5 @@
         for (Way w1 : referers.getWays()) {
             assertEquals(true, expectedWayIds.contains(w1.getId()));
-            assertEquals(true, w1.incomplete);
+            assertEquals(true, w1.isIncomplete());
         }
 
@@ -448,17 +448,17 @@
         r = lookupRelation(referers, 6);
         assertNotNull(r);
-        assertEquals(false, r.incomplete);
+        assertEquals(false, r.isIncomplete());
         referringRelationsIds.add(r.getId());
         r = lookupRelation(referers, 7);
         assertNotNull(r);
-        assertEquals(false, r.incomplete);
+        assertEquals(false, r.isIncomplete());
         referringRelationsIds.add(r.getId());
         r = lookupRelation(referers, 8);
         assertNotNull(r);
-        assertEquals(false, r.incomplete);
+        assertEquals(false, r.isIncomplete());
         referringRelationsIds.add(r.getId());
         r = lookupRelation(referers, 9);
         assertNotNull(r);
-        assertEquals(false, r.incomplete);
+        assertEquals(false, r.isIncomplete());
         referringRelationsIds.add(r.getId());
 
@@ -466,5 +466,5 @@
         //
         for (Relation r1 : referers.getRelations()) {
-            assertEquals(false, r1.incomplete);
+            assertEquals(false, r1.isIncomplete());
         }
 
@@ -496,5 +496,5 @@
             Way w = (Way) referers.getPrimitiveById(id, OsmPrimitiveType.WAY);
             assertNotNull(w);
-            assertEquals(false, w.incomplete);
+            assertEquals(false, w.isIncomplete());
         }
 
Index: /trunk/test/unit/org/openstreetmap/josm/data/osm/APIDataSetTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/data/osm/APIDataSetTest.java	(revision 2577)
+++ /trunk/test/unit/org/openstreetmap/josm/data/osm/APIDataSetTest.java	(revision 2578)
@@ -76,5 +76,5 @@
         Relation r4 = new Relation(1);
         r4.put("name", "r4");
-        r4.incomplete = false;
+        r4.setIncomplete(false);
         r4.setModified(true);
 
Index: /trunk/test/unit/org/openstreetmap/josm/data/osm/DataSetMergerTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/data/osm/DataSetMergerTest.java	(revision 2577)
+++ /trunk/test/unit/org/openstreetmap/josm/data/osm/DataSetMergerTest.java	(revision 2578)
@@ -202,5 +202,5 @@
         Node n = new Node(1);
         n.setCoor(new LatLon(0,0));
-        n.incomplete = false;
+        n.setIncomplete(false);
         n.setDeleted(true);
         n.put("key1", "value1");
@@ -449,5 +449,5 @@
         n.setCoor(new LatLon(0,0));
         n.setOsmId(1,1);
-        n.incomplete = true;
+        n.setIncomplete(true);
         my.addPrimitive(n);
 
@@ -470,5 +470,5 @@
         assertEquals("value1",n2.get("key1"));
         assertEquals(true, n1.getTimestamp().equals(n2.getTimestamp()));
-        assertEquals(false, n2.incomplete);
+        assertEquals(false, n2.isIncomplete());
         assertTrue(n2 == n);
     }
@@ -1004,5 +1004,5 @@
         w3.setNodes(Arrays.asList(n1,n2));
         source.addPrimitive(w3);
-        assertTrue(w3.incomplete);
+        assertTrue(w3.isIncomplete());
 
         DataSet target = new DataSet();
@@ -1016,18 +1016,18 @@
         OsmPrimitive p= target.getPrimitiveById(1, OsmPrimitiveType.NODE);
         assertNotNull(p);
-        assertTrue(p.incomplete);
+        assertTrue(p.isIncomplete());
         p= target.getPrimitiveById(2, OsmPrimitiveType.NODE);
         assertNotNull(p);
-        assertTrue(p.incomplete);
+        assertTrue(p.isIncomplete());
         p= target.getPrimitiveById(3, OsmPrimitiveType.WAY);
         assertNotNull(p);
-        assertTrue(p.incomplete);
+        assertTrue(p.isIncomplete());
 
         Way w = (Way)target.getPrimitiveById(3, OsmPrimitiveType.WAY);
         assertNotNull(w);
-        assertTrue(p.incomplete);
+        assertTrue(p.isIncomplete());
         assertEquals(2, w.getNodesCount());
-        assertTrue(w.getNode(0).incomplete);
-        assertTrue(w.getNode(1).incomplete);
+        assertTrue(w.getNode(0).isIncomplete());
+        assertTrue(w.getNode(1).isIncomplete());
     }
 
@@ -1067,5 +1067,5 @@
 
         Way w6 = new Way(3);
-        w6.incomplete = false;
+        w6.setIncomplete(false);
         w6.setNodes(Arrays.asList(n4,n5));
         my.addPrimitive(w6);
@@ -1078,18 +1078,18 @@
         OsmPrimitive p= my.getPrimitiveById(1, OsmPrimitiveType.NODE);
         assertNotNull(p);
-        assertTrue(!p.incomplete);
+        assertTrue(!p.isIncomplete());
         p= my.getPrimitiveById(2, OsmPrimitiveType.NODE);
         assertNotNull(p);
-        assertTrue(!p.incomplete);
+        assertTrue(!p.isIncomplete());
         p= my.getPrimitiveById(3,OsmPrimitiveType.WAY);
         assertNotNull(p);
-        assertTrue(!p.incomplete);
+        assertTrue(!p.isIncomplete());
 
         Way w = (Way)my.getPrimitiveById(3,OsmPrimitiveType.WAY);
         assertNotNull(w);
-        assertTrue(!p.incomplete);
+        assertTrue(!p.isIncomplete());
         assertEquals(2, w.getNodesCount());
-        assertTrue(!w.getNode(0).incomplete);
-        assertTrue(!w.getNode(1).incomplete);
+        assertTrue(!w.getNode(0).isIncomplete());
+        assertTrue(!w.getNode(1).isIncomplete());
     }
 
@@ -1108,5 +1108,5 @@
         Node n1 = new Node(1);
         n1.setCoor(new LatLon(1,1));
-        n1.incomplete = false;
+        n1.setIncomplete(false);
         source.addPrimitive(n1);
 
@@ -1114,5 +1114,5 @@
         Node n2 = new Node(2);
         n2.setCoor(new LatLon(2,2));
-        n2.incomplete = false;
+        n2.setIncomplete(false);
         source.addPrimitive(n2);
 
@@ -1128,8 +1128,8 @@
 
         Way w6 = new Way(3);
-        w6.incomplete = false;
+        w6.setIncomplete(false);
         w6.addNode(n4);
         w6.addNode(n5);
-        w6.incomplete = true;
+        w6.setIncomplete(true);
         target.addPrimitive(w6);
 
@@ -1143,13 +1143,13 @@
         Node n = (Node)target.getPrimitiveById(1, OsmPrimitiveType.NODE);
         assertNotNull(n);
-        assertFalse(n.incomplete);
+        assertFalse(n.isIncomplete());
 
         n = (Node)target.getPrimitiveById(2, OsmPrimitiveType.NODE);
         assertNotNull(n);
-        assertFalse(n.incomplete);
+        assertFalse(n.isIncomplete());
 
         Way w = (Way)target.getPrimitiveById(3, OsmPrimitiveType.WAY);
         assertNotNull(w);
-        assertFalse(w.incomplete);
+        assertFalse(w.isIncomplete());
         assertEquals(2, w.getNodesCount());
         assertEquals(1, w.getNode(0).getId());
Index: /trunk/test/unit/org/openstreetmap/josm/data/osm/visitor/MergeSourceBuildingVisitorTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/data/osm/visitor/MergeSourceBuildingVisitorTest.java	(revision 2577)
+++ /trunk/test/unit/org/openstreetmap/josm/data/osm/visitor/MergeSourceBuildingVisitorTest.java	(revision 2578)
@@ -72,5 +72,5 @@
         Node n2 = new Node(2);
         Way w1 = new Way(3);
-        w1.incomplete = false;
+        w1.setIncomplete(false);
         w1.addNode(n1);
         w1.addNode(n2);
@@ -105,5 +105,5 @@
         Node n2 = new Node(2);
         Way w1 = new Way(3);
-        w1.incomplete = false;
+        w1.setIncomplete(false);
         w1.addNode(n1);
         w1.addNode(n2);
@@ -147,5 +147,5 @@
         assertNotNull(p);
         assertEquals(p.getClass(), Way.class);
-        assertTrue(p.incomplete);
+        assertTrue(p.isIncomplete());
     }
 
@@ -156,7 +156,7 @@
         Node n20 = new Node(20);
         r1.addMember(new RelationMember("node-20",n20));
-        r1.incomplete = false;
+        r1.setIncomplete(false);
         Way w30 = new Way(30);
-        w30.incomplete = false;
+        w30.setIncomplete(false);
         Node n21;
         w30.addNode(n21 = new Node(21));
@@ -217,5 +217,5 @@
         r1.addMember(new RelationMember("node-20",n20));
         Way w30 = new Way(30);
-        w30.incomplete = false;
+        w30.setIncomplete(false);
         Node n21;
         w30.addNode(n21 = new Node(21));
@@ -246,5 +246,5 @@
         Way w = (Way)hull.getPrimitiveById(30, OsmPrimitiveType.WAY);
         assertNotNull(w);
-        assertTrue(w.incomplete);
+        assertTrue(w.isIncomplete());
 
 
@@ -257,5 +257,5 @@
         Relation r = (Relation)hull.getPrimitiveById(40, OsmPrimitiveType.RELATION);
         assertNotNull(r);
-        assertTrue(r.incomplete);
+        assertTrue(r.isIncomplete());
 
         r = (Relation)hull.getPrimitiveById(1, OsmPrimitiveType.RELATION);
Index: /trunk/test/unit/org/openstreetmap/josm/gui/conflict/nodes/NodeListMergeModelTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/gui/conflict/nodes/NodeListMergeModelTest.java	(revision 2577)
+++ /trunk/test/unit/org/openstreetmap/josm/gui/conflict/nodes/NodeListMergeModelTest.java	(revision 2578)
@@ -65,5 +65,5 @@
 
         Way myWay = new Way(1);
-        myWay.incomplete = false;
+        myWay.setIncomplete(false);
         myWay.addNode(new Node(2));
         myWay.addNode(new Node(3));
@@ -90,5 +90,5 @@
 
         Way myWay = new Way(1);
-        myWay.incomplete = false;
+        myWay.setIncomplete(false);
         myWay.addNode(new Node(2));
         myWay.addNode(new Node(3));
@@ -122,5 +122,5 @@
 
         Way myWay = new Way(1);
-        myWay.incomplete = false;
+        myWay.setIncomplete(false);
         myWay.addNode(new Node(2));
         myWay.addNode(new Node(3));
@@ -150,5 +150,5 @@
 
         Way myWay = new Way(1);
-        myWay.incomplete = false;
+        myWay.setIncomplete(false);
         myWay.addNode(new Node(2));
         myWay.addNode(new Node(3));
@@ -179,5 +179,5 @@
 
         Way myWay = new Way(1);
-        myWay.incomplete = false;
+        myWay.setIncomplete(false);
         myWay.addNode(new Node(2));
         myWay.addNode(new Node(3));
@@ -201,5 +201,5 @@
 
         Way myWay = new Way(1);
-        myWay.incomplete = false;
+        myWay.setIncomplete(false);
         myWay.addNode(new Node(2));
         myWay.addNode(new Node(3));
@@ -228,5 +228,5 @@
 
         Way myWay = new Way(1);
-        myWay.incomplete = false;
+        myWay.setIncomplete(false);
         myWay.addNode(new Node(2));
         myWay.addNode(new Node(3));
@@ -256,5 +256,5 @@
 
         Way myWay = new Way(1);
-        myWay.incomplete = false;
+        myWay.setIncomplete(false);
         myWay.addNode(new Node(2));
         myWay.addNode(new Node(3));
@@ -289,5 +289,5 @@
 
         Way myWay = new Way(1);
-        myWay.incomplete = false;
+        myWay.setIncomplete(false);
         myWay.addNode(new Node(1));
         myWay.addNode(new Node(2));
@@ -318,5 +318,5 @@
 
         Way myWay = new Way(1);
-        myWay.incomplete = false;
+        myWay.setIncomplete(false);
         myWay.addNode(new Node(1));
         myWay.addNode(new Node(2));
@@ -347,5 +347,5 @@
 
         Way myWay = new Way(1);
-        myWay.incomplete = false;
+        myWay.setIncomplete(false);
         myWay.addNode(new Node(1));
         myWay.addNode(new Node(2));
@@ -381,5 +381,5 @@
 
         Way myWay = new Way(1);
-        myWay.incomplete = false;
+        myWay.setIncomplete(false);
         myWay.addNode(new Node(1));
         myWay.addNode(new Node(2));
@@ -410,5 +410,5 @@
 
         Way myWay = new Way(1);
-        myWay.incomplete = false;
+        myWay.setIncomplete(false);
         myWay.addNode(new Node(1));
         myWay.addNode(new Node(2));
@@ -441,5 +441,5 @@
 
         Way myWay = new Way(1);
-        myWay.incomplete = false;
+        myWay.setIncomplete(false);
         myWay.addNode(new Node(1));
         myWay.addNode(new Node(2));
@@ -471,5 +471,5 @@
 
         Way myWay = new Way(1);
-        myWay.incomplete = false;
+        myWay.setIncomplete(false);
         myWay.addNode(new Node(1));
         myWay.addNode(new Node(2));
@@ -505,5 +505,5 @@
 
         Way myWay = new Way(1);
-        myWay.incomplete = false;
+        myWay.setIncomplete(false);
         myWay.addNode(new Node(1));
         myWay.addNode(new Node(2));
@@ -532,5 +532,5 @@
 
         Way myWay = new Way(1);
-        myWay.incomplete = false;
+        myWay.setIncomplete(false);
         myWay.addNode(new Node(1));
         myWay.addNode(new Node(2));
@@ -563,5 +563,5 @@
 
         Way myWay = new Way(1);
-        myWay.incomplete = false;
+        myWay.setIncomplete(false);
         myWay.addNode(new Node(1));
         myWay.addNode(new Node(2));
@@ -597,5 +597,5 @@
 
         Way myWay = new Way(1);
-        myWay.incomplete = false;
+        myWay.setIncomplete(false);
         myWay.addNode(new Node(1));
         myWay.addNode(new Node(2));
@@ -624,5 +624,5 @@
 
         Way myWay = new Way(1);
-        myWay.incomplete = false;
+        myWay.setIncomplete(false);
         myWay.addNode(new Node(1));
         myWay.addNode(new Node(2));
@@ -655,5 +655,5 @@
 
         Way myWay = new Way(1);
-        myWay.incomplete = false;
+        myWay.setIncomplete(false);
         myWay.addNode(new Node(1));
         myWay.addNode(new Node(2));
