Mark and Sean, thanks for the replies.
This solves things at run time, but agents left over from previous runs are still portrayed in subsequent runs (in the little example I sent you can try hitting the stop button before it gets to setp 20 and then restart).
I imagine the updateSpatialIndex() method or something else that permanently destroys the Stoppable objects must be invoked when the run ends. I tried to do it in the GUIState class but without success. There doesn't seem to exist any way in the Scheduler class to set something to run at simulation end either. How else can I do it?