async def METHOD_NAME(request, router_filesystem: Tuple[asyncio.Semaphore, AsyncFS, Dict[str, str]]):
    sema, fs, bases = router_filesystem
    [src_scheme, dest_scheme] = request.param.split('/')
    src_base = await fresh_dir(fs, bases, src_scheme)
    dest_base = await fresh_dir(fs, bases, dest_scheme)
    await asyncio.gather(*[
        fs.mkdir(x) for x in [f'{src_base}a/', f'{src_base}b/', f'{dest_base}a/', f'{dest_base}b/']])
    await asyncio.gather(
        fs.write(f'{src_base}same', b'123'),
        fs.write(f'{dest_base}same', b'123'),
        fs.write(f'{src_base}diff', b'123'),
        fs.write(f'{dest_base}diff', b'1'),
        fs.write(f'{src_base}src-only', b'123'),
        fs.write(f'{dest_base}dest-only', b'123'),
        fs.write(f'{src_base}a/same', b'123'),
        fs.write(f'{dest_base}a/same', b'123'),
        fs.write(f'{src_base}a/diff', b'123'),
        fs.write(f'{dest_base}a/diff', b'1'),
        fs.write(f'{src_base}a/src-only', b'123'),
        fs.write(f'{dest_base}a/dest-only', b'123'),
        fs.write(f'{src_base}b/same', b'123'),
        fs.write(f'{dest_base}b/same', b'123'),
        fs.write(f'{src_base}b/diff', b'123'),
        fs.write(f'{dest_base}b/diff', b'1'),
        fs.write(f'{src_base}b/src-only', b'123'),
        fs.write(f'{dest_base}b/dest-only', b'123'),
    )
    yield sema, fs, src_base, dest_base