This will create a new snapshot for every reconciliation, which can be quite often, though I agree the list will be most likely very short. Wouldn't it be a better solution to keep listeners in an immutable collection (say, `List`), and synchronize on add/remove operations? Those are more likely to be uncontended, and we'd have less GC pressure.