<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def splitpath(self, path):
 """Mimic os.path.splitpath using the specified path_separator. Mimics os.path.splitpath using the path_separator that was specified for this FakeFilesystem. Args: path: (str) The path to split. Returns: (str) A duple (pathname, basename) for which pathname does not end with a slash, and basename does not contain a slash. """

        path = self.normcase(path)
        sep = self._path_separator(path)
        path_components = path.split(sep)
        if not path_components:
            return ('', '')

        starts_with_drive = self._starts_with_drive_letter(path)
        basename = path_components.pop()
        colon = self._matching_string(path, ':')
        if not path_components:
            if starts_with_drive:
                components = basename.split(colon)
                return (components[0] + colon, components[1])
            return ('', basename)
        for component in path_components:
            if component:
                # The path is not the root; it contains a non-separator
                # component. Strip all trailing separators.
                while not path_components[-1]:
                    path_components.pop()
                if starts_with_drive:
                    if not path_components:
                        components = basename.split(colon)
                        return (components[0] + colon, components[1])
                    if (len(path_components) == 1 and
                            path_components[0].endswith(colon)):
                        return (path_components[0] + sep, basename)
                return (sep.join(path_components), basename)
        # Root path.  Collapse all leading separators.
        return (sep, basename)