Index: trunk/src/org/openstreetmap/josm/actions/search/SearchCompiler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/search/SearchCompiler.java	(revision 10655)
+++ trunk/src/org/openstreetmap/josm/actions/search/SearchCompiler.java	(revision 10656)
@@ -1033,5 +1033,5 @@
                 if (ref instanceof Relation && !ref.isIncomplete() && !ref.isDeleted()) {
                     for (RelationMember m : ((Relation) ref).getMembers()) {
-                        if (m.getMember() == osm) {
+                        if (osm.equals(m.getMember())) {
                             String testRole = m.getRole();
                             if (role.equals(testRole == null ? "" : testRole))
Index: trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java	(revision 10655)
+++ trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java	(revision 10656)
@@ -17,4 +17,5 @@
 import java.util.Locale;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Set;
 
@@ -1004,5 +1005,6 @@
     /**
      * Add new referrer. If referrer is already included then no action is taken
-     * @param referrer The referrer to add
+     * @param referrer The referrer to add. Must not be null
+     * @throws NullPointerException if {@code referrer} is null
      */
     protected void addReferrer(OsmPrimitive referrer) {
@@ -1010,10 +1012,10 @@
             referrers = referrer;
         } else if (referrers instanceof OsmPrimitive) {
-            if (referrers != referrer) {
+            if (!referrer.equals(referrers)) {
                 referrers = new OsmPrimitive[] {(OsmPrimitive) referrers, referrer};
             }
         } else {
             for (OsmPrimitive primitive:(OsmPrimitive[]) referrers) {
-                if (primitive == referrer)
+                if (referrer.equals(primitive))
                     return;
             }
@@ -1024,9 +1026,10 @@
     /**
      * Remove referrer. No action is taken if referrer is not registered
-     * @param referrer The referrer to remove
+     * @param referrer The referrer to remove. Must not be null
+     * @throws NullPointerException if {@code referrer} is null
      */
     protected void removeReferrer(OsmPrimitive referrer) {
         if (referrers instanceof OsmPrimitive) {
-            if (referrers == referrer) {
+            if (referrer.equals(referrers)) {
                 referrers = null;
             }
@@ -1035,5 +1038,5 @@
             int idx = -1;
             for (int i = 0; i < orig.length; i++) {
-                if (orig[i] == referrer) {
+                if (referrer.equals(orig[i])) {
                     idx = i;
                     break;
@@ -1263,5 +1266,5 @@
                 && version == other.version
                 && isVisible() == other.isVisible()
-                && (user == null ? other.user == null : user == other.user)
+                && Objects.equals(user, other.user)
                 && changesetId == other.changesetId;
     }
Index: trunk/src/org/openstreetmap/josm/data/osm/Relation.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/Relation.java	(revision 10655)
+++ trunk/src/org/openstreetmap/josm/data/osm/Relation.java	(revision 10656)
@@ -9,4 +9,5 @@
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Set;
 
@@ -115,5 +116,5 @@
             RelationMember originalMember = members[index];
             members[index] = member;
-            if (originalMember.getMember() != member.getMember()) {
+            if (!Objects.equals(originalMember.getMember(), member.getMember())) {
                 member.getMember().addReferrer(this);
                 member.getMember().clearCachedStyle();
Index: trunk/src/org/openstreetmap/josm/data/osm/RelationMember.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/RelationMember.java	(revision 10655)
+++ trunk/src/org/openstreetmap/josm/data/osm/RelationMember.java	(revision 10656)
@@ -161,5 +161,5 @@
      */
     public boolean refersTo(OsmPrimitive primitive) {
-        return member == primitive;
+        return Objects.equals(member, primitive);
     }
 
@@ -175,5 +175,5 @@
         RelationMember that = (RelationMember) obj;
         return Objects.equals(role, that.role) &&
-                Objects.equals(member, that.member);
+               Objects.equals(member, that.member);
     }
 
Index: trunk/src/org/openstreetmap/josm/data/osm/Way.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/Way.java	(revision 10655)
+++ trunk/src/org/openstreetmap/josm/data/osm/Way.java	(revision 10656)
@@ -9,4 +9,5 @@
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Set;
 
@@ -88,5 +89,5 @@
         for (int i = 0; i < count && count > 2;) {
             Node n = nodes.get(i);
-            if (last == n) {
+            if (Objects.equals(last, n)) {
                 nodes.remove(i);
                 --count;
@@ -361,5 +362,5 @@
         boolean locked = writeLock();
         try {
-            boolean closed = lastNode() == n && firstNode() == n;
+            boolean closed = Objects.equals(lastNode(), n) && Objects.equals(firstNode(), n);
             int i;
             List<Node> copy = getNodes();
@@ -370,5 +371,5 @@
             if (closed && i > 2) {
                 copy.add(copy.get(0));
-            } else if (i >= 2 && i <= 3 && copy.get(0) == copy.get(i-1)) {
+            } else if (i >= 2 && i <= 3 && Objects.equals(copy.get(0), copy.get(i-1))) {
                 copy.remove(i-1);
             }
@@ -401,5 +402,5 @@
             if (closed && i > 2) {
                 copy.add(copy.get(0));
-            } else if (i >= 2 && i <= 3 && copy.get(0) == copy.get(i-1)) {
+            } else if (i >= 2 && i <= 3 && Objects.equals(copy.get(0), copy.get(i-1))) {
                 copy.remove(i-1);
             }
@@ -494,5 +495,5 @@
 
         Node[] nodes = this.nodes;
-        return nodes.length >= 3 && nodes[nodes.length-1] == nodes[0];
+        return nodes.length >= 3 && Objects.equals(nodes[nodes.length-1], nodes[0]);
     }
 
@@ -507,7 +508,7 @@
             Node distinctNode = null;
             for (int i = 1; i < nodes.length-1; i++) {
-                if (distinctNode == null && nodes[i] != nodes[0]) {
+                if (distinctNode == null && !Objects.equals(nodes[i], nodes[0])) {
                     distinctNode = nodes[i];
-                } else if (distinctNode != null && nodes[i] != nodes[0] && nodes[i] != distinctNode) {
+                } else if (distinctNode != null && !Objects.equals(nodes[i], nodes[0]) && !Objects.equals(nodes[i], distinctNode)) {
                     return true;
                 }
@@ -550,5 +551,5 @@
         Node[] nodes = this.nodes;
         if (isIncomplete() || nodes.length == 0) return false;
-        return n == nodes[0] || n == nodes[nodes.length -1];
+        return Objects.equals(n, nodes[0]) || Objects.equals(n, nodes[nodes.length -1]);
     }
 
@@ -563,7 +564,7 @@
         if (isIncomplete() || nodes.length <= 2) return false;
         /* circular ways have only inner nodes, so return true for them! */
-        if (n == nodes[0] && n == nodes[nodes.length-1]) return true;
+        if (Objects.equals(n, nodes[0]) && Objects.equals(n, nodes[nodes.length-1])) return true;
         for (int i = 1; i < nodes.length - 1; ++i) {
-            if (nodes[i] == n) return true;
+            if (Objects.equals(nodes[i], n)) return true;
         }
         return false;
Index: trunk/src/org/openstreetmap/josm/data/osm/history/HistoryWay.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/history/HistoryWay.java	(revision 10655)
+++ trunk/src/org/openstreetmap/josm/data/osm/history/HistoryWay.java	(revision 10656)
@@ -8,4 +8,5 @@
 import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
@@ -137,5 +138,5 @@
      */
     public boolean isClosed() {
-        return getNumNodes() >= 3 && nodeIds.get(0) == nodeIds.get(nodeIds.size()-1);
+        return getNumNodes() >= 3 && Objects.equals(nodeIds.get(0), nodeIds.get(nodeIds.size()-1));
     }
 
Index: trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/MapPaintSettings.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/MapPaintSettings.java	(revision 10655)
+++ trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/MapPaintSettings.java	(revision 10656)
@@ -3,4 +3,5 @@
 
 import java.awt.Color;
+import java.util.Objects;
 
 import org.openstreetmap.josm.Main;
@@ -83,5 +84,5 @@
         taggedColor = PaintColors.TAGGED.get();
         connectionColor = PaintColors.CONNECTION.get();
-        if (taggedColor != nodeColor) {
+        if (!Objects.equals(taggedColor, nodeColor)) {
             taggedConnectionColor = taggedColor;
         } else {
Index: trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java	(revision 10655)
+++ trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java	(revision 10656)
@@ -34,4 +34,5 @@
 import java.util.Map;
 import java.util.NoSuchElementException;
+import java.util.Objects;
 import java.util.concurrent.ForkJoinPool;
 import java.util.concurrent.ForkJoinTask;
@@ -226,7 +227,7 @@
 
             // simple node on top of icons and shapes
-            if (this.style == NodeElement.SIMPLE_NODE_ELEMSTYLE && other.style != NodeElement.SIMPLE_NODE_ELEMSTYLE)
+            if (NodeElement.SIMPLE_NODE_ELEMSTYLE.equals(this.style) && !NodeElement.SIMPLE_NODE_ELEMSTYLE.equals(other.style))
                 return 1;
-            if (this.style != NodeElement.SIMPLE_NODE_ELEMSTYLE && other.style == NodeElement.SIMPLE_NODE_ELEMSTYLE)
+            if (!NodeElement.SIMPLE_NODE_ELEMSTYLE.equals(this.style) && NodeElement.SIMPLE_NODE_ELEMSTYLE.equals(other.style))
                 return -1;
 
@@ -1146,5 +1147,5 @@
         /* find the "direct" nodes before the via node */
         Node fromNode;
-        if (fromWay.firstNode() == via) {
+        if (Objects.equals(fromWay.firstNode(), via)) {
             fromNode = fromWay.getNode(1);
         } else {
@@ -1441,5 +1442,5 @@
             GeneralPath highlightSegs = null;
             for (WaySegment ws : highlightWaySegments) {
-                if (ws.way != way || ws.lowerIndex < offset) {
+                if (!Objects.equals(ws.way, way) || ws.lowerIndex < offset) {
                     continue;
                 }
Index: trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/relations/Multipolygon.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/relations/Multipolygon.java	(revision 10655)
+++ trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/relations/Multipolygon.java	(revision 10656)
@@ -11,4 +11,5 @@
 import java.util.Iterator;
 import java.util.List;
+import java.util.Objects;
 import java.util.Set;
 
@@ -298,5 +299,5 @@
                 }
             }
-            if (nodes.size() >= 3 && nodes.get(0) == nodes.get(nodes.size() - 1)) {
+            if (nodes.size() >= 3 && Objects.equals(nodes.get(0), nodes.get(nodes.size() - 1))) {
                 poly.closePath();
             }
@@ -548,22 +549,22 @@
                             if (nodes == null) {
                                 nl = w.getNodesCount()-1;
-                                if (w.getNode(nl) == c.getNode(0)) {
+                                if (Objects.equals(w.getNode(nl), c.getNode(0))) {
                                     mode = 21;
-                                } else if (w.getNode(nl) == c.getNode(cl)) {
+                                } else if (Objects.equals(w.getNode(nl), c.getNode(cl))) {
                                     mode = 22;
-                                } else if (w.getNode(0) == c.getNode(0)) {
+                                } else if (Objects.equals(w.getNode(0), c.getNode(0))) {
                                     mode = 11;
-                                } else if (w.getNode(0) == c.getNode(cl)) {
+                                } else if (Objects.equals(w.getNode(0), c.getNode(cl))) {
                                     mode = 12;
                                 }
                             } else {
                                 nl = nodes.size()-1;
-                                if (nodes.get(nl) == c.getNode(0)) {
+                                if (Objects.equals(nodes.get(nl), c.getNode(0))) {
                                     mode = 21;
-                                } else if (nodes.get(0) == c.getNode(cl)) {
+                                } else if (Objects.equals(nodes.get(0), c.getNode(cl))) {
                                     mode = 12;
-                                } else if (nodes.get(0) == c.getNode(0)) {
+                                } else if (Objects.equals(nodes.get(0), c.getNode(0))) {
                                     mode = 11;
-                                } else if (nodes.get(nl) == c.getNode(cl)) {
+                                } else if (Objects.equals(nodes.get(nl), c.getNode(cl))) {
                                     mode = 22;
                                 }
Index: trunk/src/org/openstreetmap/josm/tools/Geometry.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/Geometry.java	(revision 10655)
+++ trunk/src/org/openstreetmap/josm/tools/Geometry.java	(revision 10656)
@@ -15,4 +15,5 @@
 import java.util.LinkedHashSet;
 import java.util.List;
+import java.util.Objects;
 import java.util.Set;
 
@@ -115,5 +116,5 @@
                         int commonCount = 0;
                         //test if we have common nodes to add.
-                        if (seg1Node1 == seg2Node1 || seg1Node1 == seg2Node2) {
+                        if (Objects.equals(seg1Node1, seg2Node1) || Objects.equals(seg1Node1, seg2Node2)) {
                             commonCount++;
 
@@ -127,5 +128,5 @@
                         }
 
-                        if (seg1Node2 == seg2Node1 || seg1Node2 == seg2Node2) {
+                        if (Objects.equals(seg1Node2, seg2Node1) || Objects.equals(seg1Node2, seg2Node2)) {
                             commonCount++;
 
@@ -189,5 +190,5 @@
                                 intersectionNodes.add(intNode);
 
-                                if (intNode == newNode) {
+                                if (Objects.equals(intNode, newNode)) {
                                     cmds.add(new AddCommand(intNode));
                                 }
@@ -702,5 +703,5 @@
     public static boolean isClockwise(List<Node> nodes) {
         int nodesCount = nodes.size();
-        if (nodesCount < 3 || nodes.get(0) != nodes.get(nodesCount - 1)) {
+        if (nodesCount < 3 || !Objects.equals(nodes.get(0), nodes.get(nodesCount - 1))) {
             throw new IllegalArgumentException("Way must be closed to check orientation.");
         }
@@ -990,5 +991,5 @@
         double perimeter = 0;
         if (!nodes.isEmpty()) {
-            boolean closed = nodes.get(0) == nodes.get(nodes.size() - 1);
+            boolean closed = Objects.equals(nodes.get(0), nodes.get(nodes.size() - 1));
             int numSegments = closed ? nodes.size() - 1 : nodes.size();
             EastNorth p1 = projection == null ? nodes.get(0).getEastNorth() : projection.latlon2eastNorth(nodes.get(0).getCoor());
