<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def move_dir( src_fs, # type: Union[Text, FS] src_path, # type: Text dst_fs, # type: Union[Text, FS] dst_path, # type: Text workers=0, # type: int ):
 """Move a directory from one filesystem to another. Arguments: src_fs (FS or str):
 Source filesystem (instance or URL). src_path (str):
 Path to a directory on ``src_fs`` dst_fs (FS or str):
 Destination filesystem (instance or URL). dst_path (str):
 Path to a directory on ``dst_fs``. workers (int):
 Use `worker` threads to copy data, or ``0`` (default) for a single-threaded copy. """


    def src():
        return manage_fs(src_fs, writeable=False)

    def dst():
        return manage_fs(dst_fs, create=True)

    with src() as _src_fs, dst() as _dst_fs:
        with _src_fs.lock(), _dst_fs.lock():
            _dst_fs.makedir(dst_path, recreate=True)
            copy_dir(src_fs, src_path, dst_fs, dst_path, workers=workers)
            _src_fs.removetree(src_path)