AudioProcessorValueTreeState and parameter constraints

I’ve moved some of my plugins from a custom by-hand parameter handling to AudioProcessorValueTreeState and it’s a delight (still not a huge fan of the dozens of if(parameter changed) in the process block), but now I have another issue there.
Sy I have crossover filter banks, and I want to keep all the parameters sorted (because it wouldn’t make sense to allow band 1 high frequency to be higher that band 2 higher frequency). With listeners, I don’t see how you can tell the tree state that this is forbidden.
With wdl-ol, as we had one callback for all values, it was simple to highjack a setValue that was out of the current bound and set it at the last allowed value, but I can’t see a simple way of doing this for JUCE without inheriting from AudioProcessorValueTreeState…
I’m sure someone solved this issue already, it would be nice to share the good solution!

Seems like no one actually implemented something for this specific problem?