Index: /applications/editors/josm/plugins/tracer2/src/org/openstreetmap/josm/plugins/tracer2/ConnectWays.java
===================================================================
--- /applications/editors/josm/plugins/tracer2/src/org/openstreetmap/josm/plugins/tracer2/ConnectWays.java	(revision 34975)
+++ /applications/editors/josm/plugins/tracer2/src/org/openstreetmap/josm/plugins/tracer2/ConnectWays.java	(revision 34976)
@@ -25,4 +25,5 @@
 import org.openstreetmap.josm.plugins.tracer2.preferences.ServerParam;
 import org.openstreetmap.josm.tools.Pair;
+import org.openstreetmap.josm.tools.Utils;
 
 public final class ConnectWays {
@@ -70,5 +71,5 @@
     private static List<Way> getWaysOfNode(Node node) {
         List<Way> ways;
-        ways = OsmPrimitive.getFilteredList(node.getReferrers(), Way.class);
+        ways = new LinkedList<>(Utils.filteredCollection(node.getReferrers(), Way.class));
         return ways;
     }
Index: /applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/gui/RoadGui.java
===================================================================
--- /applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/gui/RoadGui.java	(revision 34975)
+++ /applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/gui/RoadGui.java	(revision 34976)
@@ -39,5 +39,5 @@
 import org.openstreetmap.josm.plugins.turnlanes.model.Lane;
 import org.openstreetmap.josm.plugins.turnlanes.model.Road;
-import org.openstreetmap.josm.plugins.turnlanes.model.Utils;
+import org.openstreetmap.josm.plugins.turnlanes.model.TurnlanesUtils;
 
 class RoadGui {
@@ -629,5 +629,5 @@
         final Node n = end.getJunction().getNode();
         for (Way w : org.openstreetmap.josm.tools.Utils.filteredCollection(n.getReferrers(), Way.class)) {
-            if (w.getNodesCount() > 1 && !end.getWay().equals(w) && w.isFirstLastNode(n) && Utils.isRoad(w)) {
+            if (w.getNodesCount() > 1 && !end.getWay().equals(w) && w.isFirstLastNode(n) && TurnlanesUtils.isRoad(w)) {
                 final Node nextNode = w.firstNode().equals(n) ? w.getNode(1) : w.getNode(w.getNodesCount() - 2);
                 final Point2D nextNodeLoc = getContainer().translateAndScale(loc(nextNode));
Index: /applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/Lane.java
===================================================================
--- /applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/Lane.java	(revision 34975)
+++ /applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/Lane.java	(revision 34976)
@@ -69,5 +69,5 @@
 
     static int getRegularCount(Way w, Node end) {
-        final int count = Utils.parseIntTag(w, "lanes");
+        final int count = TurnlanesUtils.parseIntTag(w, "lanes");
         final boolean forward = w.lastNode().equals(end);
 
@@ -89,10 +89,10 @@
     private static int getRegularCountTwoWay(Way w, boolean forward, final int count) {
         if (w.get("lanes:backward") != null) {
-            final int backwardCount = Utils.parseIntTag(w, "lanes:backward");
+            final int backwardCount = TurnlanesUtils.parseIntTag(w, "lanes:backward");
             return forward ? count - backwardCount : backwardCount;
         }
 
         if (w.get("lanes:forward") != null) {
-            final int forwardCount = Utils.parseIntTag(w, "lanes:forward");
+            final int forwardCount = TurnlanesUtils.parseIntTag(w, "lanes:forward");
             return forward ? forwardCount : count - forwardCount;
         }
@@ -205,5 +205,5 @@
                 r.addMember(new RelationMember(Constants.TURN_ROLE_VIA, getOutgoingJunction().getNode()));
             } else {
-                for (Way w : Utils.flattenVia(getOutgoingJunction().getNode(), via, to.getJunction().getNode())) {
+                for (Way w : TurnlanesUtils.flattenVia(getOutgoingJunction().getNode(), via, to.getJunction().getNode())) {
                     r.addMember(new RelationMember(Constants.TURN_ROLE_VIA, w));
                 }
Index: /applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/ModelContainer.java
===================================================================
--- /applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/ModelContainer.java	(revision 34975)
+++ /applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/ModelContainer.java	(revision 34976)
@@ -45,5 +45,5 @@
 
             for (Node n : new ArrayList<>(closedNodes)) {
-                for (Way w : Utils.filterRoads(n.getReferrers())) {
+                for (Way w : TurnlanesUtils.filterRoads(n.getReferrers())) {
                     if (w.isFirstLastNode(n)) {
                         closed &= close(closedNodes, closedWays, w);
@@ -80,5 +80,5 @@
 
         final List<Way> via = new ArrayList<>();
-        for (RelationMember m : Utils.getMembers(r, Constants.TURN_ROLE_VIA)) {
+        for (RelationMember m : TurnlanesUtils.getMembers(r, Constants.TURN_ROLE_VIA)) {
             if (m.isWay()) {
                 closed &= !closedWays.add(m.getWay());
@@ -90,9 +90,9 @@
 
         if (!via.isEmpty()) {
-            final Way from = Utils.getMemberWay(r, Constants.TURN_ROLE_FROM);
-            final Way to = Utils.getMemberWay(r, Constants.TURN_ROLE_TO);
-
-            closed &= !closedNodes.add(Utils.lineUp(from, via.get(0)));
-            closed &= !closedNodes.add(Utils.lineUp(via.get(via.size() - 1), to));
+            final Way from = TurnlanesUtils.getMemberWay(r, Constants.TURN_ROLE_FROM);
+            final Way to = TurnlanesUtils.getMemberWay(r, Constants.TURN_ROLE_TO);
+
+            closed &= !closedNodes.add(TurnlanesUtils.lineUp(from, via.get(0)));
+            closed &= !closedNodes.add(TurnlanesUtils.lineUp(via.get(via.size() - 1), to));
         }
 
@@ -142,5 +142,5 @@
             }
 
-            for (Route r : Utils.orderWays(this.primaryWays, this.primaryNodes)) {
+            for (Route r : TurnlanesUtils.orderWays(this.primaryWays, this.primaryNodes)) {
                 addRoad(new Road(this, r));
             }
@@ -159,5 +159,5 @@
         for (Node n : primaryNodes) {
             final List<Way> ws = new ArrayList<>();
-            for (Way w : Utils.filterRoads(n.getReferrers())) {
+            for (Way w : TurnlanesUtils.filterRoads(n.getReferrers())) {
                 if (w.isFirstLastNode(n)) {
                     ws.add(w);
Index: /applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/Road.java
===================================================================
--- /applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/Road.java	(revision 34975)
+++ /applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/Road.java	(revision 34976)
@@ -124,5 +124,5 @@
             final Relation target;
             if (rel == null) {
-                if (other == null || !Utils.getMemberNode(other, "end").equals(n)) {
+                if (other == null || !TurnlanesUtils.getMemberNode(other, "end").equals(n)) {
                     target = createLengthsRelation();
                 } else {
Index: /applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/Route.java
===================================================================
--- /applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/Route.java	(revision 34975)
+++ /applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/Route.java	(revision 34976)
@@ -98,6 +98,6 @@
 
     public static Route load(Relation r) {
-        final Node end = Utils.getMemberNode(r, Constants.LENGTHS_ROLE_END);
-        final List<Way> ws = Utils.getMemberWays(r, Constants.LENGTHS_ROLE_WAYS);
+        final Node end = TurnlanesUtils.getMemberNode(r, Constants.LENGTHS_ROLE_END);
+        final List<Way> ws = TurnlanesUtils.getMemberWays(r, Constants.LENGTHS_ROLE_WAYS);
 
         return create(ws, end);
@@ -143,5 +143,5 @@
             }
 
-            final Node start = Utils.getOppositeEnd(w, end);
+            final Node start = TurnlanesUtils.getOppositeEnd(w, end);
             segments.add(0, new Segment(start, w, end));
             end = start;
Index: /applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/Turn.java
===================================================================
--- /applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/Turn.java	(revision 34975)
+++ /applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/Turn.java	(revision 34976)
@@ -54,6 +54,6 @@
 
     private static Set<Turn> loadWithViaWays(ModelContainer c, Relation r) {
-        final Way from = Utils.getMemberWay(r, Constants.TURN_ROLE_FROM);
-        final Way to = Utils.getMemberWay(r, Constants.TURN_ROLE_TO);
+        final Way from = TurnlanesUtils.getMemberWay(r, Constants.TURN_ROLE_FROM);
+        final Way to = TurnlanesUtils.getMemberWay(r, Constants.TURN_ROLE_TO);
 
         if (!c.hasRoad(from) || !c.hasRoad(to)) {
@@ -61,8 +61,8 @@
         }
 
-        final List<Way> tmp = Utils.getMemberWays(r, Constants.TURN_ROLE_VIA);
+        final List<Way> tmp = TurnlanesUtils.getMemberWays(r, Constants.TURN_ROLE_VIA);
         final LinkedList<Road> via = new LinkedList<>();
 
-        final Road.End fromRoadEnd = c.getJunction(Utils.lineUp(from, tmp.get(0))).getRoadEnd(from);
+        final Road.End fromRoadEnd = c.getJunction(TurnlanesUtils.lineUp(from, tmp.get(0))).getRoadEnd(from);
 
         Node n = fromRoadEnd.getJunction().getNode();
@@ -76,5 +76,5 @@
             final Road v = c.getRoad(w);
             via.add(v);
-            n = Utils.getOppositeEnd(w, n);
+            n = TurnlanesUtils.getOppositeEnd(w, n);
 
             if (!v.isPrimary()) {
@@ -88,5 +88,5 @@
             while (it2.hasNext()) {
                 final Way w2 = it2.next().getWay();
-                n = Utils.getOppositeEnd(w2, n);
+                n = TurnlanesUtils.getOppositeEnd(w2, n);
 
                 if (!it.hasNext() || !w2.equals(it.next())) {
@@ -96,5 +96,5 @@
         }
         final Road.End toRoadEnd = c.getJunction(n).getRoadEnd(to);
-        n = Utils.getOppositeEnd(to, n);
+        n = TurnlanesUtils.getOppositeEnd(to, n);
 
         final Set<Turn> result = new HashSet<>();
@@ -124,7 +124,7 @@
 
     private static Set<Turn> loadWithViaNode(ModelContainer c, Relation r) {
-        final Way from = Utils.getMemberWay(r, Constants.TURN_ROLE_FROM);
-        final Node via = Utils.getMemberNode(r, Constants.TURN_ROLE_VIA);
-        final Way to = Utils.getMemberWay(r, Constants.TURN_ROLE_TO);
+        final Way from = TurnlanesUtils.getMemberWay(r, Constants.TURN_ROLE_FROM);
+        final Node via = TurnlanesUtils.getMemberNode(r, Constants.TURN_ROLE_VIA);
+        final Way to = TurnlanesUtils.getMemberWay(r, Constants.TURN_ROLE_TO);
 
         if (!c.hasRoad(from) || !c.hasJunction(via) || !c.hasRoad(to)) {
Index: /applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/Validator.java
===================================================================
--- /applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/Validator.java	(revision 34975)
+++ /applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/model/Validator.java	(revision 34976)
@@ -17,9 +17,9 @@
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
-import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.plugins.turnlanes.model.Issue.QuickFix;
+import org.openstreetmap.josm.tools.Utils;
 
 public class Validator {
@@ -109,5 +109,5 @@
         final List<Relation> turns = new ArrayList<>();
 
-        for (Relation r : OsmPrimitive.getFilteredList(dataSet.allPrimitives(), Relation.class)) {
+        for (Relation r : Utils.filteredCollection(dataSet.allPrimitives(), Relation.class)) {
             if (!r.isUsable()) {
                 continue;
@@ -152,5 +152,5 @@
 
         try {
-            final Node end = Utils.getMemberNode(r, Constants.LENGTHS_ROLE_END);
+            final Node end = TurnlanesUtils.getMemberNode(r, Constants.LENGTHS_ROLE_END);
             final Route route = validateLengthsWays(r, end, issues);
 
@@ -207,5 +207,5 @@
 
     private Route validateLengthsWays(Relation r, Node end, List<Issue> issues) {
-        final List<Way> ways = Utils.getMemberWays(r, Constants.LENGTHS_ROLE_WAYS);
+        final List<Way> ways = TurnlanesUtils.getMemberWays(r, Constants.LENGTHS_ROLE_WAYS);
 
         if (ways.isEmpty()) {
@@ -221,5 +221,5 @@
             }
 
-            current = Utils.getOppositeEnd(w, current);
+            current = TurnlanesUtils.getOppositeEnd(w, current);
         }
 
@@ -247,5 +247,5 @@
                     it.remove();
                     ordered.add(w);
-                    current = Utils.getOppositeEnd(w, current);
+                    current = TurnlanesUtils.getOppositeEnd(w, current);
                     continue findNext;
                 }
@@ -294,6 +294,6 @@
 
         try {
-            final Way from = Utils.getMemberWay(r, Constants.TURN_ROLE_FROM);
-            final Way to = Utils.getMemberWay(r, Constants.TURN_ROLE_TO);
+            final Way from = TurnlanesUtils.getMemberWay(r, Constants.TURN_ROLE_FROM);
+            final Way to = TurnlanesUtils.getMemberWay(r, Constants.TURN_ROLE_TO);
 
             if (from.firstNode().equals(from.lastNode())) {
@@ -308,11 +308,11 @@
 
             final Node fromJunctionNode;
-            final List<RelationMember> viaMembers = Utils.getMembers(r, Constants.TURN_ROLE_VIA);
+            final List<RelationMember> viaMembers = TurnlanesUtils.getMembers(r, Constants.TURN_ROLE_VIA);
             if (viaMembers.isEmpty()) {
                 throw UnexpectedDataException.Kind.NO_MEMBER.chuck(Constants.TURN_ROLE_VIA);
             } else if (viaMembers.get(0).isWay()) {
-                final List<Way> vias = Utils.getMemberWays(r, Constants.TURN_ROLE_VIA);
-
-                fromJunctionNode = Utils.lineUp(from, vias.get(0));
+                final List<Way> vias = TurnlanesUtils.getMemberWays(r, Constants.TURN_ROLE_VIA);
+
+                fromJunctionNode = TurnlanesUtils.lineUp(from, vias.get(0));
                 Node current = fromJunctionNode;
                 for (Way via : vias) {
@@ -322,8 +322,8 @@
                     }
 
-                    current = Utils.getOppositeEnd(via, current);
+                    current = TurnlanesUtils.getOppositeEnd(via, current);
                 }
             } else {
-                final Node via = Utils.getMemberNode(r, Constants.TURN_ROLE_VIA);
+                final Node via = TurnlanesUtils.getMemberNode(r, Constants.TURN_ROLE_VIA);
 
                 if (!from.isFirstLastNode(via)) {
Index: /applications/editors/josm/plugins/turnrestrictions/src/org/openstreetmap/josm/plugins/turnrestrictions/TurnRestrictionBuilder.java
===================================================================
--- /applications/editors/josm/plugins/turnrestrictions/src/org/openstreetmap/josm/plugins/turnrestrictions/TurnRestrictionBuilder.java	(revision 34975)
+++ /applications/editors/josm/plugins/turnrestrictions/src/org/openstreetmap/josm/plugins/turnrestrictions/TurnRestrictionBuilder.java	(revision 34976)
@@ -17,4 +17,5 @@
 import org.openstreetmap.josm.plugins.turnrestrictions.editor.TurnRestrictionType;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
+import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -313,6 +314,6 @@
 
         // we need exactly one node and one way in the selection ...
-        List<Node> nodes = OsmPrimitive.getFilteredList(primitives, Node.class);
-        List<Way> ways = OsmPrimitive.getFilteredList(primitives, Way.class);
+        List<Node> nodes = new ArrayList<>(Utils.filteredCollection(primitives, Node.class));
+        List<Way> ways = new ArrayList<>(Utils.filteredCollection(primitives, Way.class));
         if (nodes.size() != 1 || ways.size() != 1) return null;
 
@@ -374,5 +375,5 @@
             // See initNoUTurnRestriction() for the case where we have a selected way
             // and a selected node
-            List<Way> selWays = OsmPrimitive.getFilteredList(primitives, Way.class);
+            List<Way> selWays = new ArrayList<>(Utils.filteredCollection(primitives, Way.class));
             if (selWays.size() != 2) return null;
             w1 = selWays.get(0);
@@ -382,6 +383,6 @@
             // if we have exactly three selected primitives, we need two ways and a
             // node, which should be an acceptable via node
-            List<Way> selWays = OsmPrimitive.getFilteredList(primitives, Way.class);
-            List<Node> selNodes = OsmPrimitive.getFilteredList(primitives, Node.class);
+            List<Way> selWays = new ArrayList<>(Utils.filteredCollection(primitives, Way.class));
+            List<Node> selNodes = new ArrayList<>(Utils.filteredCollection(primitives, Node.class));
             if (selWays.size() != 2) return null;
             if (selNodes.size() != 1) return null;
@@ -449,5 +450,5 @@
         case 1:
             tr = initEmptyTurnRestriction();
-            if (OsmPrimitive.getFilteredList(primitives, Way.class).size() == 1) {
+            if (Utils.filteredCollection(primitives, Way.class).size() == 1) {
                 // we have exactly one selected way? -> init the "from" leg
                 // of the turn restriction with it
Index: /applications/editors/josm/plugins/turnrestrictions/src/org/openstreetmap/josm/plugins/turnrestrictions/editor/TurnRestrictionLegEditor.java
===================================================================
--- /applications/editors/josm/plugins/turnrestrictions/src/org/openstreetmap/josm/plugins/turnrestrictions/editor/TurnRestrictionLegEditor.java	(revision 34975)
+++ /applications/editors/josm/plugins/turnrestrictions/src/org/openstreetmap/josm/plugins/turnrestrictions/editor/TurnRestrictionLegEditor.java	(revision 34976)
@@ -20,4 +20,5 @@
 import java.awt.event.MouseMotionAdapter;
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashSet;
@@ -55,4 +56,5 @@
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.Shortcut;
+import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -293,5 +295,5 @@
          @Override
         public void actionPerformed(ActionEvent e) {
-             List<Way> selWays = OsmPrimitive.getFilteredList(model.getJosmSelectionListModel().getSelected(), Way.class);
+             List<Way> selWays = new ArrayList<>(Utils.filteredCollection(model.getJosmSelectionListModel().getSelected(), Way.class));
              if (selWays.size() != 1) return;
              Way w = selWays.get(0);
@@ -300,5 +302,5 @@
 
          public void updateEnabledState() {
-            setEnabled(OsmPrimitive.getFilteredList(model.getJosmSelectionListModel().getSelected(), Way.class).size() == 1);
+            setEnabled(Utils.filteredCollection(model.getJosmSelectionListModel().getSelected(), Way.class).size() == 1);
          }
 
Index: /applications/editors/josm/plugins/waydownloader/src/org/openstreetmap/josm/plugins/waydownloader/WayDownloaderPlugin.java
===================================================================
--- /applications/editors/josm/plugins/waydownloader/src/org/openstreetmap/josm/plugins/waydownloader/WayDownloaderPlugin.java	(revision 34975)
+++ /applications/editors/josm/plugins/waydownloader/src/org/openstreetmap/josm/plugins/waydownloader/WayDownloaderPlugin.java	(revision 34976)
@@ -38,4 +38,5 @@
 import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Shortcut;
+import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -271,5 +272,5 @@
      */
     private List<Way> findConnectedWays(Node referenceNode) {
-        List<Way> referers = OsmPrimitive.getFilteredList(referenceNode.getReferrers(), Way.class);
+        List<Way> referers = new ArrayList<>(Utils.filteredCollection(referenceNode.getReferrers(), Way.class));
         ArrayList<Way> connectedWays = new ArrayList<>(referers.size());
 
