code: def execute_on_keys(self, keys, entry_processor):
          
          key_list = []
          for key in keys:
              check_not_none(key, "key can't be None")
              key_list.append(self._to_data(key))
  
          if len(keys) == 0:
              return ImmediateFuture([])
  
          return self._encode_invoke(map_execute_on_keys_codec, entry_processor=self._to_data(entry_processor),
                                     keys=key_list)
docs: Applies the user defined EntryProcessor to the entries mapped by the collection of keys. Returns the results
          mapped by each key in the collection.
  
          :param keys: (Collection), collection of the keys for the entries to be processed.
          :param entry_processor: (object), A stateful serializable object which represents the EntryProcessor defined on
              server side.
              This object must have a serializable EntryProcessor counter part registered on server side with the actual
              ``org.hazelcast.map.EntryProcessor`` implementation.
          :return: (Sequence), list of map entries which includes the keys and the results of the entry process.