Clone

        Recursively copy a directory tree.  Removes the destination
        directory as the destination directory must not already exist.

        @param autoDelete: Used to clean up files on completion.  Default as
        True.
        @type autoDelete: Boolean
        @return: The cloned directory.

def clone(self, autoDelete: bool = True) -> 'Directory':
        """ Clone

        Recursively copy a directory tree.  Removes the destination
        directory as the destination directory must not already exist.

        @param autoDelete: Used to clean up files on completion.  Default as
        True.
        @type autoDelete: Boolean
        @return: The cloned directory.
        """

        d = Directory(autoDelete=autoDelete)
        os.rmdir(d._path)  # shutil doesn't like it existing
        shutil.copytree(self._path, d._path)
        d.scan()
        return d