<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def execute_on_entries(self, entry_processor, predicate=None):
 """ Applies the user defined EntryProcessor to all the entries in the map or entries in the map which satisfies the predicate if provided. Returns the results mapped by each key in the map. :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. :param predicate: (Predicate), predicate for filtering the entries (optional). :return: (Sequence), list of map entries which includes the keys and the results of the entry process. .. seealso:: :class:`~hazelcast.serialization.predicate.Predicate` for more info about predicates. """

        if predicate:
            return self._encode_invoke(map_execute_with_predicate_codec, entry_processor=self._to_data(entry_processor),
                                       predicate=self._to_data(predicate))
        return self._encode_invoke(map_execute_on_all_keys_codec, entry_processor=self._to_data(entry_processor))