Index: trunk/src/org/openstreetmap/josm/data/osm/QuadBuckets.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/QuadBuckets.java	(revision 2424)
+++ trunk/src/org/openstreetmap/josm/data/osm/QuadBuckets.java	(revision 2425)
@@ -241,5 +241,5 @@
             return "Way??";
         }
-        boolean remove_content(T o)
+        synchronized boolean remove_content(T o)
         {
             boolean ret = this.content.remove(o);
@@ -798,4 +798,15 @@
             return QuadTiling.tile2LatLon(this.quad);
         }
+        boolean hasChildren()
+        {
+            if (children == null)
+                return false;
+
+            for (QBLevel child : children) {
+                if (child != null)
+                    return true;
+            }
+            return false;
+        }
         void remove_from_parent()
         {
@@ -810,7 +821,6 @@
                 if (sibling != this)
                     continue;
-                if (this.content != null ||
-                    this.children != null)
-                    abort("attempt to remove non-empty child");
+                if (!canRemove())
+                    abort("attempt to remove non-empty child: " + this.content + " " + this.children);
                 parent.children[i] = null;
                 nr_siblings--;
@@ -823,10 +833,6 @@
             if (content != null && content.size() > 0)
                 return false;
-            if (children != null) {
-                for (QBLevel child : children) {
-                    if (child != null)
-                        return false;
-                }
-            }
+            if (this.hasChildren())
+                return false;
             return true;
         }
