Index: trunk/src/org/openstreetmap/josm/actions/search/SearchCompiler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/search/SearchCompiler.java	(revision 2290)
+++ trunk/src/org/openstreetmap/josm/actions/search/SearchCompiler.java	(revision 2291)
@@ -230,42 +230,42 @@
 
             switch (mode) {
-            case NONE:
-                return false;
-            case MISSING_KEY:
-                return osm.get(key) == null;
-            case ANY:
-                return true;
-            case ANY_VALUE:
-                return osm.get(key) != null;
-            case ANY_KEY:
-                for (String v:osm.getKeys().values()) {
-                    if (v.equals(value))
-                        return true;
-                }
-                return false;
-            case EXACT:
-                return value.equals(osm.get(key));
-            case ANY_KEY_REGEXP:
-                for (String v:osm.getKeys().values()) {
-                    if (valuePattern.matcher(v).matches())
-                        return true;
-                }
-                return false;
-            case ANY_VALUE_REGEXP:
-            case EXACT_REGEXP:
-                for (Entry<String, String> entry:osm.entrySet()) {
-                    if (keyPattern.matcher(entry.getKey()).matches()) {
-                        if (mode == Mode.ANY_VALUE_REGEXP
-                                || valuePattern.matcher(entry.getValue()).matches())
+                case NONE:
+                    return false;
+                case MISSING_KEY:
+                    return osm.get(key) == null;
+                case ANY:
+                    return true;
+                case ANY_VALUE:
+                    return osm.get(key) != null;
+                case ANY_KEY:
+                    for (String v:osm.getKeys().values()) {
+                        if (v.equals(value))
                             return true;
                     }
-                }
-                return false;
-            case MISSING_KEY_REGEXP:
-                for (String k:osm.keySet()) {
-                    if (keyPattern.matcher(k).matches())
-                        return false;
-                }
-                return true;
+                    return false;
+                case EXACT:
+                    return value.equals(osm.get(key));
+                case ANY_KEY_REGEXP:
+                    for (String v:osm.getKeys().values()) {
+                        if (valuePattern.matcher(v).matches())
+                            return true;
+                    }
+                    return false;
+                case ANY_VALUE_REGEXP:
+                case EXACT_REGEXP:
+                    for (Entry<String, String> entry:osm.entrySet()) {
+                        if (keyPattern.matcher(entry.getKey()).matches()) {
+                            if (mode == Mode.ANY_VALUE_REGEXP
+                                    || valuePattern.matcher(entry.getValue()).matches())
+                                return true;
+                        }
+                    }
+                    return false;
+                case MISSING_KEY_REGEXP:
+                    for (String k:osm.keySet()) {
+                        if (keyPattern.matcher(k).matches())
+                            return false;
+                    }
+                    return true;
             }
             throw new AssertionError("Missed state");
@@ -331,6 +331,6 @@
                 }
             }
-            if (osm.user != null) {
-                String name = osm.user.getName();
+            if (osm.getUser() != null) {
+                String name = osm.getUser().getName();
                 // is not Java 1.5
                 //String name = java.text.Normalizer.normalize(name, java.text.Normalizer.Form.NFC);
@@ -377,7 +377,7 @@
         }
         @Override public boolean match(OsmPrimitive osm) {
-            if (osm.user == null && user == null) return true;
-            if (osm.user == null) return false;
-            return osm.user.equals(user);
+            if (osm.getUser() == null && user == null) return true;
+            if (osm.getUser() == null) return false;
+            return osm.getUser().equals(user);
         }
         @Override public String toString() {
Index: trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java	(revision 2290)
+++ trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java	(revision 2291)
@@ -135,5 +135,5 @@
      * Never changed by JOSM.
      */
-    public User user = null;
+    private User user = null;
 
     /**
@@ -161,7 +161,7 @@
             this.id = id;
         } else {
-            if (id < 0) {
+            if (id < 0)
                 throw new IllegalArgumentException(tr("Expected ID >= 0. Got {0}.", id));
-            } else if (id == 0) {
+            else if (id == 0) {
                 this.id = idCounter.decrementAndGet();
             } else {
@@ -483,4 +483,22 @@
         setModified(deleted);
         setSelected(false);
+    }
+
+    /**
+     * Replies the user who has last touched this object. May be null.
+     * 
+     * @return the user who has last touched this object. May be null.
+     */
+    public User getUser() {
+        return user;
+    }
+
+    /**
+     * Sets the user who has last touched this object.
+     * 
+     * @param user the user
+     */
+    public void setUser(User user) {
+        this.user = user;
     }
 
Index: trunk/src/org/openstreetmap/josm/data/osm/visitor/MergeVisitor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/visitor/MergeVisitor.java	(revision 2290)
+++ trunk/src/org/openstreetmap/josm/data/osm/visitor/MergeVisitor.java	(revision 2291)
@@ -121,5 +121,5 @@
                         // version
                         my.setVisible(other.isVisible());
-                        my.user = other.user;
+                        my.setUser(other.getUser());
                         my.setTimestamp(other.getTimestamp());
                         my.setModified(other.isModified());
Index: trunk/src/org/openstreetmap/josm/gui/MapStatus.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MapStatus.java	(revision 2290)
+++ trunk/src/org/openstreetmap/josm/gui/MapStatus.java	(revision 2291)
@@ -425,6 +425,6 @@
             }
 
-            if(osm.user != null) {
-                text.append(" [" + tr("User:") + " " + osm.user.getName() + "]");
+            if(osm.getUser() != null) {
+                text.append(" [" + tr("User:") + " " + osm.getUser().getName() + "]");
             }
 
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/UserListDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/UserListDialog.java	(revision 2290)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/UserListDialog.java	(revision 2291)
@@ -278,11 +278,11 @@
             if (primitives == null || primitives.isEmpty()) return ret;
             for (OsmPrimitive primitive: primitives) {
-                if (primitive.user == null) {
+                if (primitive.getUser() == null) {
                     continue;
                 }
-                if (ret.containsKey(primitive.user)) {
-                    ret.put(primitive.user, ret.get(primitive.user) + 1);
+                if (ret.containsKey(primitive.getUser())) {
+                    ret.put(primitive.getUser(), ret.get(primitive.getUser()) + 1);
                 } else {
-                    ret.put(primitive.user, 1);
+                    ret.put(primitive.getUser(), 1);
                 }
             }
@@ -335,8 +335,8 @@
             Collection<OsmPrimitive> byUser = new LinkedList<OsmPrimitive>();
             for (OsmPrimitive p : selected) {
-                if (p.user == null) {
+                if (p.getUser() == null) {
                     continue;
                 }
-                if (users.contains(p.user)) {
+                if (users.contains(p.getUser())) {
                     byUser.add(p);
                 }
Index: trunk/src/org/openstreetmap/josm/io/OsmReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmReader.java	(revision 2290)
+++ trunk/src/org/openstreetmap/josm/io/OsmReader.java	(revision 2291)
@@ -101,5 +101,5 @@
             osm.setModified(modified | deleted);
             osm.setTimestamp(timestamp);
-            osm.user = user;
+            osm.setUser(user);
             osm.setVisible(visible);
             osm.mappaintStyle = null;
Index: trunk/src/org/openstreetmap/josm/io/OsmWriter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmWriter.java	(revision 2290)
+++ trunk/src/org/openstreetmap/josm/io/OsmWriter.java	(revision 2291)
@@ -225,11 +225,11 @@
         }
         // user and visible added with 0.4 API
-        if (osm.user != null) {
-            if(osm.user.isLocalUser()) {
-                out.print(" user='"+XmlWriter.encode(osm.user.getName())+"'");
-            } else if (osm.user.isOsmUser()) {
+        if (osm.getUser() != null) {
+            if(osm.getUser().isLocalUser()) {
+                out.print(" user='"+XmlWriter.encode(osm.getUser().getName())+"'");
+            } else if (osm.getUser().isOsmUser()) {
                 // uid added with 0.6
-                out.print(" uid='"+ osm.user.getId()+"'");
-                out.print(" user='"+XmlWriter.encode(osm.user.getName())+"'");
+                out.print(" uid='"+ osm.getUser().getId()+"'");
+                out.print(" user='"+XmlWriter.encode(osm.getUser().getName())+"'");
             }
         }
