public Map executeOnKeysInternal(Set<Data> keys, EntryProcessor entryProcessor) {
   // TODO: why are we not forwarding to executeOnKeysInternal(keys, entryProcessor, null) or some
   // other kind of fake
   // callback? now there is a lot of code duplication
   Map<Object, Object> result = new HashMap<Object, Object>();
   Collection<Integer> partitionsForKeys = getPartitionsForKeys(keys);
   try {
     OperationFactory operationFactory =
         operationProvider.createMultipleEntryOperationFactory(name, keys, entryProcessor);
     Map<Integer, Object> results =
         operationService.invokeOnPartitions(SERVICE_NAME, operationFactory, partitionsForKeys);
     for (Object object : results.values()) {
       if (object != null) {
         MapEntries mapEntries = (MapEntries) object;
         mapEntries.putAllToMap(serializationService, result);
       }
     }
   } catch (Throwable t) {
     throw rethrow(t);
   }
   return result;
 }