PacketReader actually stores a listener wrapper for each listener in VolatileMemberCollection. The problem is that VolatileMemberCollection implementation of removal is not doing the right comparison between the listener that wants to be removed and the collection elements.
PacketReader actually stores a listener wrapper for each listener in VolatileMemberCollection. The problem is that VolatileMemberCollection implementation of removal is not doing the right comparison between the listener that wants to be removed and the collection elements.