<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 async def process_entry(self, url, add_domain=False, send_mentions=True):
 """ process an entry """


        if add_domain:
            self._feed_domains.add(utils.get_domain(url))

        if url in self._processed_entries:
            LOGGER.debug("Skipping already processed entry %s", url)
            return
        self._processed_entries.add(url)

        LOGGER.debug("++WAIT: get entry %s", url)
        entry, previous, updated = await entries.get_entry(self, url)
        LOGGER.debug("++DONE: get entry %s", url)

        LOGGER.debug("--- starting process_entry %s", url)

        pending = []

        if updated:
            LOGGER.info("Processing entry: %s", url)
            if send_mentions:
                # get the webmention targets
                links = entry.get_targets(self)
                if previous:
                    # Only bother with links that changed from the last time
                    links = links ^ previous.get_targets(self)

                for link in links:
                    pending.append(("send webmention {} -> {}".format(url, link),
                                    self.send_webmention(entry, link)))

            if self.args.recurse:
                for feed in entry.feeds:
                    if utils.get_domain(feed) in self._feed_domains:
                        pending.append(("process feed " + feed,
                                        self.process_feed(feed, send_mentions=send_mentions)))
                    else:
                        LOGGER.info("Ignoring non-local feed %s", feed)

        LOGGER.debug("--- finish process_entry %s", url)

        if pending:
            LOGGER.debug("+++WAIT: process_entry(%s): %d subtasks",
                         url, len(pending))
            LOGGER.debug("%s", [name for (name, _) in pending])
            await asyncio.wait([task for (_, task) in pending])
            LOGGER.debug("+++DONE: process_entry(%s): %d subtasks",
                         url, len(pending))