Brought up by @kiiadi - our beautiful Java "step" builder, which enforces required fields before optional fields will cause backwards compatibility issues when a field is changed from required to optional (which is not supposed to be a breaking change).
Furthermore, the current approach will also cause a breaking change if the order of properties change across revisions, which is also unacceptable.