def METHOD_NAME(self):
    """
    Make necessary directories for case
    """
    # Get data from XML
    exeroot = self.get_value("EXEROOT")
    libroot = self.get_value("LIBROOT")
    incroot = self.get_value("INCROOT")
    rundir = self.get_value("RUNDIR")
    caseroot = self.get_value("CASEROOT")
    docdir = os.path.join(caseroot, "CaseDocs")
    dirs_to_make = []
    models = self.get_values("COMP_CLASSES")
    for model in models:
        dirname = model.lower()
        dirs_to_make.append(os.path.join(exeroot, dirname, "obj"))
    dirs_to_make.extend([exeroot, libroot, incroot, rundir, docdir])
    for dir_to_make in dirs_to_make:
        if not os.path.isdir(dir_to_make) and not os.path.islink(dir_to_make):
            try:
                logger.debug("Making dir '{}'".format(dir_to_make))
                os.makedirs(dir_to_make)
            except OSError as e:
                # In a multithreaded situation, we may have lost a race to create this dir.
                # We do not want to crash if that's the case.
                if not os.path.isdir(dir_to_make):
                    expect(
                        False,
                        "Could not make directory '{}', error: {}".format(
                            dir_to_make, e
                        ),
                    )
    # As a convenience write the location of the case directory in the bld and run directories
    for dir_ in (exeroot, rundir):
        with open(os.path.join(dir_, "CASEROOT"), "w+") as fd:
            fd.write(caseroot + "\n")