Index: trunk/src/org/openstreetmap/josm/data/osm/IWay.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/IWay.java	(revision 13919)
+++ trunk/src/org/openstreetmap/josm/data/osm/IWay.java	(revision 13922)
@@ -97,7 +97,7 @@
      * The result equals {@link #getNode getNode}{@code (0)}.
      * @return the first node of this way
-     * @since 13918
+     * @since 13922
      */
-    Node firstNode();
+    N firstNode();
 
     /**
@@ -105,7 +105,7 @@
      * The result equals <code>{@link #getNode getNode}({@link #getNodesCount getNodesCount} - 1)</code>.
      * @return the last node of this way
-     * @since 13918
+     * @since 13922
      */
-    Node lastNode();
+    N lastNode();
 
     /**
@@ -113,7 +113,7 @@
      * @param n The node to test
      * @return true if the {@code n} is the first or the last node, false otherwise.
-     * @since 13918
+     * @since 13922
      */
-    boolean isFirstLastNode(Node n);
+    boolean isFirstLastNode(INode n);
 
     /**
@@ -121,6 +121,6 @@
      * @param n The node to test
      * @return true if the {@code n} is an inner node, false otherwise.
-     * @since 13918
+     * @since 13922
      */
-    boolean isInnerNode(Node n);
+    boolean isInnerNode(INode n);
 }
Index: trunk/src/org/openstreetmap/josm/data/osm/Way.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/Way.java	(revision 13919)
+++ trunk/src/org/openstreetmap/josm/data/osm/Way.java	(revision 13922)
@@ -505,5 +505,5 @@
 
     @Override
-    public boolean isFirstLastNode(Node n) {
+    public boolean isFirstLastNode(INode n) {
         Node[] nodes = this.nodes;
         if (isIncomplete() || nodes.length == 0) return false;
@@ -512,5 +512,5 @@
 
     @Override
-    public boolean isInnerNode(Node n) {
+    public boolean isInnerNode(INode n) {
         Node[] nodes = this.nodes;
         if (isIncomplete() || nodes.length <= 2) return false;
Index: trunk/src/org/openstreetmap/josm/data/osm/WayData.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/WayData.java	(revision 13919)
+++ trunk/src/org/openstreetmap/josm/data/osm/WayData.java	(revision 13922)
@@ -112,20 +112,20 @@
 
     @Override
-    public Node firstNode() {
+    public NodeData firstNode() {
         throw new UnsupportedOperationException();
     }
 
     @Override
-    public Node lastNode() {
+    public NodeData lastNode() {
         throw new UnsupportedOperationException();
     }
 
     @Override
-    public boolean isFirstLastNode(Node n) {
+    public boolean isFirstLastNode(INode n) {
         throw new UnsupportedOperationException();
     }
 
     @Override
-    public boolean isInnerNode(Node n) {
+    public boolean isInnerNode(INode n) {
         throw new UnsupportedOperationException();
     }
Index: trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java	(revision 13919)
+++ trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java	(revision 13922)
@@ -51,10 +51,8 @@
 import org.openstreetmap.josm.data.osm.IRelationMember;
 import org.openstreetmap.josm.data.osm.IWay;
-import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmData;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.OsmUtils;
 import org.openstreetmap.josm.data.osm.Relation;
-import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.osm.WaySegment;
 import org.openstreetmap.josm.data.osm.visitor.paint.relations.Multipolygon;
@@ -975,13 +973,13 @@
             return;
 
-        Node viaNode;
-        if (via instanceof Node) {
-            viaNode = (Node) via;
+        INode viaNode;
+        if (via instanceof INode) {
+            viaNode = (INode) via;
             if (!fromWay.isFirstLastNode(viaNode))
                 return;
         } else {
-            Way viaWay = (Way) via;
-            Node firstNode = viaWay.firstNode();
-            Node lastNode = viaWay.lastNode();
+            IWay<?> viaWay = (IWay<?>) via;
+            INode firstNode = viaWay.firstNode();
+            INode lastNode = viaWay.lastNode();
             Boolean onewayvia = Boolean.FALSE;
 
@@ -990,5 +988,5 @@
                 if ("-1".equals(onewayviastr)) {
                     onewayvia = Boolean.TRUE;
-                    Node tmp = firstNode;
+                    INode tmp = firstNode;
                     firstNode = lastNode;
                     lastNode = tmp;
@@ -1197,6 +1195,6 @@
      */
     private void forEachPolygon(IPrimitive osm, Consumer<MapViewPath> consumer) {
-        if (osm instanceof Way) {
-            consumer.accept(getPath((Way) osm));
+        if (osm instanceof IWay) {
+            consumer.accept(getPath((IWay<?>) osm));
         } else if (osm instanceof Relation) {
             Multipolygon multipolygon = MultipolygonCache.getInstance().get((Relation) osm);
