This relies on undocumented ClientConnectionManager#equals implementation. It may be possible to replace #remove with iterator and == comparison, but I am not sure it is possible to get proper synchronization behaviour with CopyOnWriteArrayList in this case. I'd probably go with ArrayList and synchronized {} blocks around use to keep things simple.