def METHOD_NAME(self, uri: str) -> None:
    with self._lock:
        notified = set()
        for invalidation_tracker in self._invalidation_trackers:
            invalidation_tracker.mark_uri_invalidated(uri)
        did_invalidate_entry = False
        for key, entry in tuple(self._cached.items()):
            if entry.do_invalidate_on_uri_change(uri):
                uri = entry.get_root_doc().uri
                if uri not in notified:
                    notified.add(uri)
                    if self._on_dependency_changed:
                        self._on_dependency_changed(uri)
                did_invalidate_entry = True
                invalidated: Optional[
                    ICompletionContextDependencyGraph
                ] = self._cached.pop(key, None)
                if BaseOptions.DEBUG_CACHE_DEPS and invalidated:
                    log.info(
                        "Invalidated: %s\n%s\n",
                        key,
                        json.dumps(invalidated.to_dict(), indent=4),
                    )
        if BaseOptions.DEBUG_CACHE_DEPS and not did_invalidate_entry:
            log.info("%s did not invalidate the caches:", uri)
            for key, entry in tuple(self._cached.items()):
                log.info(
                    json.dumps(entry.to_dict(), indent=4),
                )