<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def unzip(zip_file_path, output_dir, permission=None):
 """ Unzip the given file into the given directory while preserving file permissions in the process. Parameters zip_file_path : str Path to the zip file output_dir : str Path to the directory where the it should be unzipped to permission : octal int Permission to set """


    with zipfile.ZipFile(zip_file_path, 'r') as zip_ref:

        # For each item in the zip file, extract the file and set permissions if available
        for file_info in zip_ref.infolist():
            name = file_info.filename
            extracted_path = os.path.join(output_dir, name)

            zip_ref.extract(name, output_dir)
            _set_permissions(file_info, extracted_path)

            _override_permissions(extracted_path, permission)

    _override_permissions(output_dir, permission)