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.

def execute_on_keys(self, keys, entry_processor):
        """
        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.
        """
        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)