Index: java/src/com/vividsolutions/jts/index/strtree/AbstractSTRtree.java
===================================================================
--- java/src/com/vividsolutions/jts/index/strtree/AbstractSTRtree.java	(revision 926)
+++ java/src/com/vividsolutions/jts/index/strtree/AbstractSTRtree.java	(working copy)
@@ -375,9 +375,12 @@
    */
   protected boolean remove(Object searchBounds, Object item) {
     build();
+    // now itemBoundables is null, so this would fail with NullPointer exception 
+    /*
     if (itemBoundables.isEmpty()) {
       Assert.isTrue(root.getBounds() == null);
     }
+    */
     if (getIntersectsOp().intersects(root.getBounds(), searchBounds)) {
       return remove(searchBounds, root, item);
     }
Index: java/test/com/vividsolutions/jts/index/STRtreeTest.java
===================================================================
--- java/test/com/vividsolutions/jts/index/STRtreeTest.java	(revision 926)
+++ java/test/com/vividsolutions/jts/index/STRtreeTest.java	(working copy)
@@ -164,6 +164,18 @@
     doTestVerticalSlices(5, 3, 2, 1);
   }
 
+  public void testRemove()
+  {
+      STRtree tree = new STRtree();
+      tree.insert(new Envelope(0, 10, 0, 10), "1");
+      tree.insert(new Envelope(5, 15, 5, 15), "2");
+      tree.insert(new Envelope(10, 20, 10, 20), "3");
+      tree.insert(new Envelope(15, 25, 15, 25), "4");
+      tree.remove(new Envelope(10, 20, 10, 20), "4");
+      assertEquals(3, tree.size());
+  }
+  
+  
   private void doTestCreateParentsFromVerticalSlice(int childCount,
       int nodeCapacity, int expectedChildrenPerParentBoundable,
       int expectedChildrenOfLastParent) {
