private void wrapEntryForRemoveIfNeeded(InvocationContext ctx, RemoveCommand command)
     throws InterruptedException {
   if (shouldWrap(command.getKey(), ctx, command)) {
     boolean forceWrap = command.getValueMatcher().nonExistentEntryCanMatch();
     EntryFactory.Wrap wrap =
         forceWrap ? EntryFactory.Wrap.WRAP_ALL : EntryFactory.Wrap.WRAP_NON_NULL;
     boolean skipRead = command.hasFlag(Flag.IGNORE_RETURN_VALUES) && !command.isConditional();
     entryFactory.wrapEntryForWriting(ctx, command.getKey(), wrap, skipRead, false);
   }
 }
 @Override
 public Object visitRemoveCommand(InvocationContext ctx, RemoveCommand command)
     throws Throwable {
   if (cdl.localNodeIsOwner(command.getKey())) {
     boolean forceWrap = command.getValueMatcher().nonExistentEntryCanMatch();
     EntryFactory.Wrap wrap =
         forceWrap ? EntryFactory.Wrap.WRAP_ALL : EntryFactory.Wrap.WRAP_NON_NULL;
     entryFactory.wrapEntryForWriting(ctx, command.getKey(), wrap, false, false);
     ctx.forkInvocationSync(command);
   }
   return null;
 }