Transactional implementation of :func:`Map.put_if_absent(key, value)
        <hazelcast.proxy.map.Map.put_if_absent>`

        The object to be put will be accessible only in the current transaction context till the transaction is
        committed.

        :param key: (object), key of the entry.
        :param value: (object), value of the entry.
        :param ttl:  (int), maximum time in seconds for this entry to stay in the map (optional).
        :return: (object), old value of the entry.

def put_if_absent(self, key, value):
        """
        Transactional implementation of :func:`Map.put_if_absent(key, value)
        <hazelcast.proxy.map.Map.put_if_absent>`

        The object to be put will be accessible only in the current transaction context till the transaction is
        committed.

        :param key: (object), key of the entry.
        :param value: (object), value of the entry.
        :param ttl:  (int), maximum time in seconds for this entry to stay in the map (optional).
        :return: (object), old value of the entry.
        """
        check_not_none(key, "key can't be none")
        check_not_none(value, "value can't be none")
        return self._encode_invoke(transactional_map_put_if_absent_codec, key=self._to_data(key),
                                   value=self._to_data(value))