<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def decompress(self, output_path):
 """ Decompress the entire container into the given directory. :param string output_path: path of the destination directory :raises: TypeError: if this container does not exist :raises: ValueError: if this container contains unsafe entries, or ``output_path`` is not an existing directory :raises: OSError: if an error occurred decompressing the given container (e.g., empty file, damaged file, etc.) """

        self.log([u"Decompressing the container into '%s'", output_path])
        if not self.exists():
            self.log_exc(u"This container does not exist. Wrong path?", None, True, TypeError)
        if self.actual_container is None:
            self.log_exc(u"The actual container object has not been set", None, True, TypeError)
        if not gf.directory_exists(output_path):
            self.log_exc(u"The output path is not an existing directory", None, True, ValueError)
        if not self.is_safe:
            self.log_exc(u"This container contains unsafe entries", None, True, ValueError)
        self.actual_container.decompress(output_path)