Can you make that change:
void ValueTree::setProperty(...) { ...}
to
ValueTree & ValueTree::setProperty(...) { ...; return *this; }
So we can write code like this:
// Using a fluent interface avoid creating a temporary and seems easier to read.
valueTree.addChild(ValueTree("foo").setProperty("bar", "yes", 0), -1, 0);
// or this:
valueTree.setProperty("bar", "yes", 0)
.setProperty("baz", "no", 0);
It’ll not break existing user code (since the previous version returned void), but would really be a saver for the new version.