@anthony-nicholls I had a closer look at the ListenerList now, and I have to say, I think this WrappedIterator stuff, was a bad design decision. The ListenerList is now not thread-safe anymore for simply calling all Listeners, which it was previously. This should have been wrapped into a different class and not propagated into the entire code-base of ValueTree etc. I think it is reasonably fine for the UI code, as this is designed for the message thread only and there are a hole lot of asserts anyway. But all other parts of the code (and maybe user-code using this class) is now possible compromised.
This change is also not listed in breaking changes, another huge oversight IMHO.
Last, I can’t make any sense of why this pattern is not also used in this function: https://github.com/juce-framework/JUCE/blob/a7d1e61a5511875dc8f345816fca94042ce074fb/modules/juce_core/containers/juce_ListenerList.h#L288
