This won't work, as at this point "submodel" contains the new value. See L99 above, which uses the same code to resolve the new value, not the one to restore.

To do this I suggest creating a new ModelType.OBJECT ModelNode with just the 1 key and currentValue as its value and passing that to resolveModelAttribute.

Also, can't all this be done inside the RollbackHandler?