shouldn't we throw the ```VersionException``` if the ```compareAndSet``` returns ```false``` ?