for (SignalListener l : listeners) {
l.send(signal);
}

Behind the scenes, this creates an iterator. Whilst this iterator is open the .send method is attempting to remove an item from the...