<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _prepend(original, to_prepend):
 """Prepend paths in a string representing a list of paths to another. original and to_prepend are expected to be strings representing os.pathsep-separated lists of filepaths. If to_prepend is None, original is returned. The list of paths represented in the returned value consists of the first of occurrences of each non-empty path in the list obtained by prepending the paths in to_prepend to the paths in original. examples: # Unix _prepend('/b:/d:/a:/d', '/a:/b:/c:/a') -> '/a:/b:/c:/d' _prepend('/a:/b:/a', '/a:/c:/c') -> '/a:/c:/b' _prepend('/c', '/a::/b:/a') -> '/a:/b:/c' _prepend('/a:/b:/a', None) -> '/a:/b:/a' _prepend('/a:/b:/a', '') -> '/a:/b' """


    if to_prepend is None:
        return original

    sep = os.pathsep

    def split_path_value(path_value):
        return [] if path_value == '' else path_value.split(sep)

    seen = set()

    components = []
    for path in split_path_value(to_prepend) + split_path_value(original):
        if path not in seen and path != '':
            components.append(path)
            seen.add(path)

    return sep.join(components)