Index: /applications/editors/josm/plugins/public_transport/src/public_transport/RoutePatternAction.java
===================================================================
--- /applications/editors/josm/plugins/public_transport/src/public_transport/RoutePatternAction.java	(revision 19982)
+++ /applications/editors/josm/plugins/public_transport/src/public_transport/RoutePatternAction.java	(revision 19983)
@@ -16,4 +16,5 @@
 import java.util.LinkedList;
 import java.util.List;
+import java.util.ListIterator;
 import java.util.Map;
 import java.util.TreeMap;
@@ -81,4 +82,6 @@
       if (route.get("route") != null)
       {
+	if (rr.route.get("route") == null)
+	  return -1;
 	int result = route.get("route").compareTo(rr.route.get("route"));
 	if (result != 0)
@@ -89,4 +92,6 @@
       if (route.get("ref") != null)
       {
+	if (rr.route.get("ref") == null)
+	  return -1;
 	int result = route.get("ref").compareTo(rr.route.get("ref"));
 	if (result != 0)
@@ -97,4 +102,6 @@
       if (route.get("to") != null)
       {
+	if (rr.route.get("to") == null)
+	  return -1;
 	int result = route.get("to").compareTo(rr.route.get("to"));
 	if (result != 0)
@@ -105,4 +112,6 @@
       if (route.get("direction") != null)
       {
+	if (rr.route.get("direction") == null)
+	  return -1;
 	int result = route.get("direction").compareTo(rr.route.get("direction"));
 	if (result != 0)
@@ -1845,8 +1854,8 @@
 	frontNodes.remove(firstListNode);
 	LinkedList<RelationMember> listToAppend = frontNodes.get(lastNode);
-	Iterator<RelationMember> memberIter = list.descendingIterator();
-	while (memberIter.hasNext())
-	{
-	  RelationMember member = memberIter.next();
+	ListIterator<RelationMember> memberIter = list.listIterator(list.size());
+	while (memberIter.hasPrevious())
+	{
+	  RelationMember member = memberIter.previous();
 	  listToAppend.addFirst(member);
 	}
@@ -1858,8 +1867,8 @@
 	frontNodes.remove(firstListNode);
 	LinkedList<RelationMember> listToAppend = backNodes.get(lastNode);
-	Iterator<RelationMember> memberIter = list.descendingIterator();
-	while (memberIter.hasNext())
-	{
-	  RelationMember member = memberIter.next();
+	ListIterator<RelationMember> memberIter = list.listIterator(list.size());
+	while (memberIter.hasPrevious())
+	{
+	  RelationMember member = memberIter.previous();
 	  if ("backward".equals(member.getRole()))
 	    listToAppend.addLast(new RelationMember("forward", member.getWay()));
