async def remove(self, path):
if await self.exists(path):<EOL><INDENT>info = await self.stat(path)<EOL>if info["<STR_LIT:type>"] == "<STR_LIT:file>":<EOL><INDENT>await self.remove_file(path)<EOL><DEDENT>elif info["<STR_LIT:type>"] == "<STR_LIT>":<EOL><INDENT>for name, info in (await self.list(path)):<EOL><INDENT>if info["<STR_LIT:type>"] in ("<STR_LIT>", "<STR_LIT:file>"):<EOL><INDENT>await self.remove(name)<EOL><DEDENT><DEDENT>await self.remove_directory(path)<EOL><DEDENT><DEDENT>
:py:func:`asyncio.coroutine`

High level remove method for removing path recursively (file or
directory).

:param path: path to remove
:type path: :py:class:`str` or :py:class:`pathlib.PurePosixPath`