<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def makedirs(self, dir_name, mode=PERM_DEF, exist_ok=None):
 """Create a leaf Fake directory + create any non-existent parent dirs. Args: dir_name: (str) Name of directory to create. mode: (int) Mode to create directory (and any necessary parent directories) with. This argument defaults to 0o777. The umask is applied to this mode. exist_ok: (boolean) If exist_ok is False (the default), an OSError is raised if the target directory already exists. New in Python 3.2. Raises: OSError: if the directory already exists and exist_ok=False, or as per :py:meth:`FakeFilesystem.create_dir`. """

        if exist_ok is None:
            exist_ok = False
        elif sys.version_info < (3, 2):
            raise TypeError("makedir() got an unexpected "
                            "keyword argument 'exist_ok'")
        self.filesystem.makedirs(dir_name, mode, exist_ok)