Index: applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/ErrorLayer.java
===================================================================
--- applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/ErrorLayer.java	(revision 10526)
+++ applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/ErrorLayer.java	(revision 10529)
@@ -36,5 +36,5 @@
 		super(tr("Validation errors"));
 		this.plugin = plugin;
-        Layer.listeners.add(this); 
+		Layer.listeners.add(this); 
 	}
 
@@ -46,58 +46,54 @@
 	}
 
-    /**
-     * Draw all primitives in this layer but do not draw modified ones (they
-     * are drawn by the edit layer).
-     * Draw nodes last to overlap the ways they belong to.
-     */
-    @SuppressWarnings("unchecked")
-    @Override 
-    public void paint(final Graphics g, final MapView mv) 
-    {
-        DefaultMutableTreeNode root = plugin.validationDialog.tree.getRoot();
-        if( root == null || root.getChildCount() == 0)
-            return;
-        
-        DefaultMutableTreeNode severity = (DefaultMutableTreeNode)root.getLastChild();
-        while( severity != null )
-        {
-            Enumeration<DefaultMutableTreeNode> errorMessages = severity.children();
-            while( errorMessages.hasMoreElements() )
-            {
-                DefaultMutableTreeNode errorMessage = errorMessages.nextElement();
-                Enumeration<DefaultMutableTreeNode> errors = errorMessage.children();
-                while( errors.hasMoreElements() )
-                {
-                    TestError error = (TestError)errors.nextElement().getUserObject();
-                    error.paint(g, mv);
-                }
-            }
-            
-            // Severities in inverse order
-            severity= severity.getPreviousSibling();
-        }
+	/**
+	 * Draw all primitives in this layer but do not draw modified ones (they
+	 * are drawn by the edit layer).
+	 * Draw nodes last to overlap the ways they belong to.
+	 */
+	@SuppressWarnings("unchecked")
+	@Override 
+	public void paint(final Graphics g, final MapView mv) 
+	{
+		DefaultMutableTreeNode root = plugin.validationDialog.tree.getRoot();
+		if( root == null || root.getChildCount() == 0)
+			return;
+		
+		DefaultMutableTreeNode severity = (DefaultMutableTreeNode)root.getLastChild();
+		while( severity != null )
+		{
+			Enumeration<DefaultMutableTreeNode> errorMessages = severity.breadthFirstEnumeration();
+			while(errorMessages.hasMoreElements())
+			{
+				Object tn = errorMessages.nextElement().getUserObject();
+				if(tn instanceof TestError)
+					((TestError)tn).paint(g, mv);
+			}
+			
+			// Severities in inverse order
+			severity = severity.getPreviousSibling();
+		}
 	}
 
 	@Override 
-    public String getToolTipText() 
-    {
-        Bag<Severity, TestError> errorTree = new Bag<Severity, TestError>();
-        List<TestError> errors = plugin.validationDialog.tree.getErrors();
-        for(TestError e : errors)
-        {
-            errorTree.add(e.getSeverity(), e);
-        }
-        
-        StringBuilder b = new StringBuilder();
-        for(Severity s : Severity.values())
-        {
-            if( errorTree.containsKey(s) )
-                b.append(tr(s.toString())).append(": ").append(errorTree.get(s).size()).append("<br>");
-        }
-        
-        if( b.length() == 0 )
-            return "<html>"+tr("No validation errors") + "</html>";
-        else
-            return "<html>" + tr("Validation errors") + ":<br>" + b + "</html>";
+	public String getToolTipText() 
+	{
+		Bag<Severity, TestError> errorTree = new Bag<Severity, TestError>();
+		List<TestError> errors = plugin.validationDialog.tree.getErrors();
+		for(TestError e : errors)
+		{
+			errorTree.add(e.getSeverity(), e);
+		}
+		
+		StringBuilder b = new StringBuilder();
+		for(Severity s : Severity.values())
+		{
+			if( errorTree.containsKey(s) )
+				b.append(tr(s.toString())).append(": ").append(errorTree.get(s).size()).append("<br>");
+		}
+		
+		if( b.length() == 0 )
+			return "<html>"+tr("No validation errors") + "</html>";
+		else
+			return "<html>" + tr("Validation errors") + ":<br>" + b + "</html>";
 	}
 
@@ -111,34 +107,34 @@
 
 	@Override public Object getInfoComponent() 
-    {
-	    return getToolTipText();
+	{
+		return getToolTipText();
 	}
 
 	@Override public Component[] getMenuEntries() 
-    {
-        return new Component[]{
-                new JMenuItem(new LayerListDialog.ShowHideLayerAction(this)),
-                new JMenuItem(new LayerListDialog.DeleteLayerAction(this)),
-                new JSeparator(),
-                new JMenuItem(new RenameLayerAction(null, this)),
-                new JSeparator(),
-                new JMenuItem(new LayerListPopup.InfoAction(this))};
-    }
+	{
+		return new Component[]{
+				new JMenuItem(new LayerListDialog.ShowHideLayerAction(this)),
+				new JMenuItem(new LayerListDialog.DeleteLayerAction(this)),
+				new JSeparator(),
+				new JMenuItem(new RenameLayerAction(null, this)),
+				new JSeparator(),
+				new JMenuItem(new LayerListPopup.InfoAction(this))};
+	}
 
 	@Override public void destroy() { }
 
-    public void activeLayerChange(Layer oldLayer, Layer newLayer) { }
+	public void activeLayerChange(Layer oldLayer, Layer newLayer) { }
 
-    public void layerAdded(Layer newLayer) { }
+	public void layerAdded(Layer newLayer) { }
 
-    /**
-     * If layer is the OSM Data layer, remove all errors
-     */
-    public void layerRemoved(Layer oldLayer)
-    {
-        if(oldLayer == Main.map.mapView.editLayer ) 
-        {
-            Main.map.mapView.removeLayer(this); 
-        }
-    }
+	/**
+	 * If layer is the OSM Data layer, remove all errors
+	 */
+	public void layerRemoved(Layer oldLayer)
+	{
+		if(oldLayer == Main.map.mapView.editLayer ) 
+		{
+			Main.map.mapView.removeLayer(this); 
+		}
+	}
 }
