-1 to add a visitVersionedPutKeyValueCommand as this interface should be kept at a minimum. The general approach used so far was to add fields on the commands, e.g. PutKeyValue.pufIfAbsent (in this case version). I think it would be better to merge VersionedPutKeyValueCommand with PutKeyValueCommand (i.e. add version to the later) or keep both commands and hardcode PutKeyValueCommand.getVersion to return null.