Index: src/org/openstreetmap/josm/data/osm/AbstractPrimitive.java
===================================================================
--- src/org/openstreetmap/josm/data/osm/AbstractPrimitive.java	(revision 14880)
+++ src/org/openstreetmap/josm/data/osm/AbstractPrimitive.java	(working copy)
@@ -233,7 +233,6 @@
 
     @Override
     public long getId() {
-        long id = this.id;
         return id >= 0 ? id : 0;
     }
 
@@ -469,7 +468,6 @@
 
     @Override
     public void visitKeys(KeyValueVisitor visitor) {
-        final String[] keys = this.keys;
         if (keys != null) {
             for (int i = 0; i < keys.length; i += 2) {
                 visitor.visitKeyValue(this, keys[i], keys[i + 1]);
@@ -639,7 +637,6 @@
      */
     @Override
     public final String get(String key) {
-        String[] keys = this.keys;
         if (key == null)
             return null;
         if (keys == null)
@@ -656,7 +653,6 @@
      * @return The value for a key that matches the given key ignoring case.
      */
     public final String getIgnoreCase(String key) {
-        String[] keys = this.keys;
         if (key == null)
             return null;
         if (keys == null)
@@ -669,13 +665,11 @@
 
     @Override
     public final int getNumKeys() {
-        String[] keys = this.keys;
         return keys == null ? 0 : keys.length / 2;
     }
 
     @Override
     public final Collection<String> keySet() {
-        final String[] keys = this.keys;
         if (keys == null) {
             return Collections.emptySet();
         }
@@ -844,7 +838,6 @@
     @Override
     public Map<String, String> getInterestingTags() {
         Map<String, String> result = new HashMap<>();
-        String[] keys = this.keys;
         if (keys != null) {
             for (int i = 0; i < keys.length; i += 2) {
                 if (!isUninterestingKey(keys[i])) {
Index: src/org/openstreetmap/josm/data/osm/OsmPrimitive.java
===================================================================
--- src/org/openstreetmap/josm/data/osm/OsmPrimitive.java	(revision 14880)
+++ src/org/openstreetmap/josm/data/osm/OsmPrimitive.java	(working copy)
@@ -816,7 +816,6 @@
             return Stream.empty();
         }
         checkDataset();
-        final Object referrers = this.referrers;
         if (referrers == null) {
             return Stream.empty();
         }
@@ -894,7 +893,6 @@
     protected final boolean isNodeReferredByWays(int n) {
         // Count only referrers that are members of the same dataset (primitive can have some fake references, for example
         // when way is cloned
-        Object referrers = this.referrers;
         if (referrers == null) return false;
         checkDataset();
         if (referrers instanceof OsmPrimitive)
Index: src/org/openstreetmap/josm/data/osm/Relation.java
===================================================================
--- src/org/openstreetmap/josm/data/osm/Relation.java	(revision 14880)
+++ src/org/openstreetmap/josm/data/osm/Relation.java	(working copy)
@@ -463,7 +463,6 @@
     private void checkMembers() {
         DataSet dataSet = getDataSet();
         if (dataSet != null) {
-            RelationMember[] members = this.members;
             for (RelationMember rm: members) {
                 if (rm.getMember().getDataSet() != dataSet)
                     throw new DataIntegrityProblemException(
@@ -493,7 +492,6 @@
 
     @Override
     public boolean hasIncompleteMembers() {
-        RelationMember[] members = this.members;
         for (RelationMember rm: members) {
             if (rm.getMember().isIncomplete()) return true;
         }
@@ -508,7 +506,6 @@
     @Override
     public Collection<OsmPrimitive> getIncompleteMembers() {
         Set<OsmPrimitive> ret = new HashSet<>();
-        RelationMember[] members = this.members;
         for (RelationMember rm: members) {
             if (!rm.getMember().isIncomplete()) {
                 continue;
Index: src/org/openstreetmap/josm/data/osm/TagMap.java
===================================================================
--- src/org/openstreetmap/josm/data/osm/TagMap.java	(revision 14880)
+++ src/org/openstreetmap/josm/data/osm/TagMap.java	(working copy)
@@ -175,7 +175,6 @@
 
     @Override
     public String get(Object key) {
-        String[] tags = this.tags;
         int index = indexOfKey(tags, key);
         return index < 0 ? null : tags[index + 1];
     }
@@ -182,7 +181,6 @@
 
     @Override
     public boolean containsValue(Object value) {
-        String[] tags = this.tags;
         for (int i = 1; i < tags.length; i += 2) {
             if (value.equals(tags[i])) {
                 return true;
Index: src/org/openstreetmap/josm/data/osm/Way.java
===================================================================
--- src/org/openstreetmap/josm/data/osm/Way.java	(revision 14880)
+++ src/org/openstreetmap/josm/data/osm/Way.java	(working copy)
@@ -119,7 +119,6 @@
     public boolean containsNode(Node node) {
         if (node == null) return false;
 
-        Node[] nodes = this.nodes;
         for (Node n : nodes) {
             if (n.equals(node))
                 return true;
@@ -139,7 +138,6 @@
 
         if (node == null) return neigh;
 
-        Node[] nodes = this.nodes;
         for (int i = 0; i < nodes.length; i++) {
             if (nodes[i].equals(node)) {
                 if (i > 0)
@@ -163,7 +161,6 @@
         List<Pair<Node, Node>> chunkSet = new ArrayList<>();
         if (isIncomplete()) return chunkSet;
         Node lastN = null;
-        Node[] nodes = this.nodes;
         for (Node n : nodes) {
             if (lastN == null) {
                 lastN = n;
@@ -465,7 +462,6 @@
     public boolean isClosed() {
         if (isIncomplete()) return false;
 
-        Node[] nodes = this.nodes;
         return nodes.length >= 3 && nodes[nodes.length-1] == nodes[0];
     }
 
@@ -491,7 +487,6 @@
 
     @Override
     public Node lastNode() {
-        Node[] nodes = this.nodes;
         if (isIncomplete() || nodes.length == 0) return null;
         return nodes[nodes.length-1];
     }
@@ -498,7 +493,6 @@
 
     @Override
     public Node firstNode() {
-        Node[] nodes = this.nodes;
         if (isIncomplete() || nodes.length == 0) return null;
         return nodes[0];
     }
@@ -505,7 +499,6 @@
 
     @Override
     public boolean isFirstLastNode(INode n) {
-        Node[] nodes = this.nodes;
         if (isIncomplete() || nodes.length == 0) return false;
         return n == nodes[0] || n == nodes[nodes.length -1];
     }
@@ -512,7 +505,6 @@
 
     @Override
     public boolean isInnerNode(INode n) {
-        Node[] nodes = this.nodes;
         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;
@@ -535,7 +527,6 @@
     private void checkNodes() {
         DataSet dataSet = getDataSet();
         if (dataSet != null) {
-            Node[] nodes = this.nodes;
             for (Node n: nodes) {
                 if (n.getDataSet() != dataSet)
                     throw new DataIntegrityProblemException("Nodes in way must be in the same dataset",
@@ -597,7 +588,6 @@
      * @since 2587
      */
     public boolean hasIncompleteNodes() {
-        Node[] nodes = this.nodes;
         for (Node node : nodes) {
             if (node.isIncomplete())
                 return true;
@@ -611,7 +601,6 @@
      * @since 13033
      */
     public boolean hasOnlyLocatableNodes() {
-        Node[] nodes = this.nodes;
         for (Node node : nodes) {
             if (!node.isLatLonKnown())
                 return false;
