@SuppressWarnings("unchecked")
private V putIfAbsentInternal(K key, V value, Metadata metadata,
EnumSet<Flag> explicitFlags, InvocationContext ctx) {
assertKeyValueNotNull(key, value);
PutKeyValueCommand command = commandsFactory.buildPutKeyValueCommand(key, value, metadata, explicitFlags);
command.setPutIfAbsent(true);
command.setValueMatcher(ValueMatcher.MATCH_EXPECTED);
return (V) executeCommandAndCommitIfNeeded(ctx, command);
}