public void testAddMultipleThingsAndGetThemAndThenRemoveThemAndStuff() throws Exception {
		WorldUpdateBuilder ub = new WorldUpdateBuilder();
		final SimpleWorldObject o0 = new SimpleWorldObject(128,  64,  32, Long.MAX_VALUE, 1);
		final SimpleWorldObject o1 = new SimpleWorldObject(128, 128,  32, Long.MAX_VALUE, 2);
		final SimpleWorldObject o2 = new SimpleWorldObject(256, 256,  64, Long.MAX_VALUE, 4);
		final SimpleWorldObject o3 = new SimpleWorldObject( 64, 768,  64, Long.MAX_VALUE, 8);
		
		////
		
		ub.add( o0 );
		ub.add( o1 );
		entree = ub.applyAndClear(entree);
		
		assertEquals( 2, entree.getObjectCount() );
		final boolean[] found = new boolean[4];
		clear(found);
		entree.forEachObject(0, Long.MAX_VALUE, new TRectangle(0,0,1024,1024), new Sink<WorldObject>() {
			@Override public void give(WorldObject p) {
				if( p == o0 ) {
					found[0] = true;
				} else if( p == o1 ) {
					found[1] = true;
				}
			}
		});
		assertTrue( found[0] );
		assertTrue( found[1] );
		
		// We should find nothing in the right half, though:
		
		clear(found);
		entree.forEachObject(0, Long.MAX_VALUE, new TRectangle(512,0,1024,1024), new Sink<WorldObject>() {
			@Override public void give(WorldObject p) {
				if( p == o0 ) {
					found[0] = true;
				} else if( p == o1 ) {
					found[1] = true;
				}
			}
		});
		assertFalse( found[0] );
		assertFalse( found[1] );
		
		////
		
		ub.add( o2 );
		ub.add( o3 );
		entree = ub.applyAndClear(entree);

		assertEquals( 4, entree.getObjectCount() );
		clear(found);
		entree.forEachObject(0, Long.MAX_VALUE, new TRectangle(0,0,1024,1024), new Sink<WorldObject>() {
			@Override public void give(WorldObject p) {
				if( p == o0 ) {
					found[0] = true;
				} else if( p == o1 ) {
					found[1] = true;
				} else if( p == o2 ) {
					found[2] = true;
				} else if( p == o3 ) {
					found[3] = true;
				}
			}
		});
		assertEquals( true, found[0] );
		assertEquals( true, found[1] );
		assertEquals( true, found[2] );
		assertEquals( true, found[3] );
		
		ub.remove( o1 );
		entree = ub.applyAndClear(entree);
		
		assertEquals( 3, entree.getObjectCount() );
		assertEquals( 3, findEntities(0, Long.MAX_VALUE, 0, 0, 1024, 1024) );
		
		ub.remove( o2 );
		ub.remove( o3 );
		entree = ub.applyAndClear(entree);
		
		assertEquals( 1, entree.getObjectCount() );
		assertEquals( 1, findEntities(0, Long.MAX_VALUE, 0, 0, 1024, 1024) );
		
		entree.forEachObject(0, Long.MAX_VALUE, new TRectangle(0,0,1024,1024), new Sink<WorldObject>() {
			@Override public void give(WorldObject p) {
				assertSame( o0, p );
			}
		});
	}