private Future<Boolean> doPut(final Object key, IdentifiableValue oldValue, Object value,
Expiration expires, MemcacheSetRequest.SetPolicy policy) {
MemcacheSetRequest.Builder requestBuilder = MemcacheSetRequest.newBuilder();
requestBuilder.setNameSpace(getEffectiveNamespace());
MemcacheSetRequest.Item.Builder itemBuilder = MemcacheSetRequest.Item.newBuilder();
ValueAndFlags vaf = serializeValue(value);
itemBuilder.setValue(ByteString.copyFrom(vaf.value));
itemBuilder.setFlags(vaf.flags.ordinal());
itemBuilder.setKey(makePbKey(key));
itemBuilder.setExpirationTime(expires == null ? 0 : expires.getSecondsValue());
itemBuilder.setSetPolicy(policy);