def _disappeared(self, fd, path, **params):
        """
        Called when an open path is no longer acessible.  This will either
        move the path to pending (if the 'missing' param is set for the
        file), or fire an exception.
    """
        log = self._getparam('log', self._discard, **params)

        log.debug("Path %r removed or renamed, handling removal", path)
        self._close(fd)
        if self._mode == WF_POLLING and fd in self._poll_stat:
            del self._poll_stat[fd]
        if self._mode == WF_INOTIFYX and path in self._inx_inode:
            del self._inx_inode[path]
        del self.fds_open[fd]
        del self.paths_open[path]
        if self.paths[path]:
            try:
                if self._add_file(path, **params):
                    log.debug("Path %r immediately reappeared, pending transition skipped", path)
                    return
            except Exception as e:
                log.debug("Path %r reappearance check failed -- %s", path, e)
            log.debug("Path %r marked as pending", path)
            self.paths_pending[path] = True
        else:
            del self.paths[path]
            raise Exception("Path %r has been removed or renamed" % path)
Called when an open path is no longer acessible.  This will either
        move the path to pending (if the 'missing' param is set for the
        file), or fire an exception.