def key_set(self, predicate=None):
        """
        Transactional implementation of :func:`Map.key_set(predicate) <hazelcast.proxy.map.Map.key_set>`

        :param predicate: (Predicate), predicate to filter the entries (optional).
        :return: (Sequence), a list of the clone of the keys.

        .. seealso::
            :class:`~hazelcast.serialization.predicate.Predicate` for more info about predicates.
        """

        if predicate:
            return self._encode_invoke(transactional_map_key_set_with_predicate_codec,
                                       predicate=self._to_data(predicate))
        return self._encode_invoke(transactional_map_key_set_codec)