Index: /trunk/src/org/openstreetmap/josm/data/osm/QuadBuckets.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/QuadBuckets.java	(revision 2352)
+++ /trunk/src/org/openstreetmap/josm/data/osm/QuadBuckets.java	(revision 2353)
@@ -245,4 +245,14 @@
                 this.content = null;
             return ret;
+        }
+        @SuppressWarnings("unchecked")
+        QBLevel[] newChildren()
+        {
+            // This is ugly and hackish.  But, it seems to work,
+            // and using an ArrayList here seems to cost us
+            // a significant performance penalty -- 50% in my
+            // testing.  Child access is one of the single
+            // hottest code paths in this entire class.
+            return (QBLevel[])Array.newInstance(this.getClass(), QuadTiling.TILES_PER_LEVEL);
         }
         // Get the correct index for the given primitive
@@ -304,10 +314,5 @@
                 abort("overwrote children");
             }
-            // This is ugly and hackish.  But, it seems to work,
-            // and using an ArrayList here seems to cost us
-            // a significant performance penalty -- 50% in my
-            // testing.  Child access is one of the single
-            // hottest code paths in this entire class.
-            children = (QBLevel[])Array.newInstance(this.getClass(), QuadTiling.TILES_PER_LEVEL);
+            children = newChildren();
             // deferring allocation of children until use
             // seems a bit faster
@@ -878,7 +883,7 @@
     // If anyone has suggestions for how to fix
     // this properly, I'm listening :)
+    @SuppressWarnings("unchecked")
     private T convert(Object raw)
     {
-        //@SuppressWarnings("unchecked")
         return (T)raw;
     }
