diff --git a/docs/css/mkdocstrings.css b/docs/css/mkdocstrings.css
index 03c39d33..7d66153a 100644
--- a/docs/css/mkdocstrings.css
+++ b/docs/css/mkdocstrings.css
@@ -25,3 +25,48 @@ a.external:hover::after,
 a.autorefs-external:hover::after {
   background-color: var(--md-accent-fg-color);
 }
+
+/* Tree-like output for backlinks. */
+.doc-backlink-list {
+  --tree-clr: var(--md-default-fg-color);
+  --tree-font-size: 1rem;
+  --tree-item-height: 1;
+  --tree-offset: 1rem;
+  --tree-thickness: 1px;
+  --tree-style: solid;
+  display: grid;
+  list-style: none !important;
+}
+
+.doc-backlink-list li > span:first-child {
+  text-indent: .3rem;
+}
+.doc-backlink-list li {
+  padding-inline-start: var(--tree-offset);
+  border-left: var(--tree-thickness) var(--tree-style) var(--tree-clr);
+  position: relative;
+  margin-left: 0 !important;
+
+  &:last-child {
+    border-color: transparent;
+  }
+  &::before{
+    content: '';
+    position: absolute;
+    top: calc(var(--tree-item-height) / 2 * -1 * var(--tree-font-size) + var(--tree-thickness));
+    left: calc(var(--tree-thickness) * -1);
+    width: calc(var(--tree-offset) + var(--tree-thickness) * 2);
+    height: calc(var(--tree-item-height)  * var(--tree-font-size));
+    border-left: var(--tree-thickness) var(--tree-style) var(--tree-clr);
+    border-bottom: var(--tree-thickness) var(--tree-style) var(--tree-clr);
+  }
+  &::after{
+    content: '';
+    position: absolute;
+    border-radius: 50%;
+    background-color: var(--tree-clr);
+    top: calc(var(--tree-item-height) / 2 * 1rem);
+    left: var(--tree-offset) ;
+    translate: calc(var(--tree-thickness) * -1) calc(var(--tree-thickness) * -1);
+  }
+}
diff --git a/docs/insiders/changelog.md b/docs/insiders/changelog.md
index a6c7b907..25562a7d 100644
--- a/docs/insiders/changelog.md
+++ b/docs/insiders/changelog.md
@@ -2,6 +2,10 @@
 
 ## mkdocstrings-python Insiders
 
+### 1.10.0 <small>March 10, 2025</small> { id="1.10.0" }
+
+- [Backlinks][backlinks]
+
 ### 1.9.0 <small>September 03, 2024</small> { id="1.9.0" }
 
 - [Relative cross-references][relative_crossrefs]
diff --git a/docs/insiders/goals.yml b/docs/insiders/goals.yml
index 16d1d507..2153312d 100644
--- a/docs/insiders/goals.yml
+++ b/docs/insiders/goals.yml
@@ -42,3 +42,6 @@ goals:
     - name: Scoped cross-references
       ref: /usage/configuration/docstrings/#scoped_crossrefs
       since: 2024/09/03
+    - name: Backlinks
+      ref: /usage/configuration/general/#backlinks
+      since: 2025/03/10
diff --git a/docs/usage/configuration/general.md b/docs/usage/configuration/general.md
index 3983a616..77b3f3f9 100644
--- a/docs/usage/configuration/general.md
+++ b/docs/usage/configuration/general.md
@@ -60,6 +60,38 @@ plugins:
 ////
 ///
 
+[](){#option-backlinks}
+## `backlinks`
+
+[:octicons-heart-fill-24:{ .pulse } Sponsors only](../../insiders/index.md){ .insiders } &mdash;
+[:octicons-tag-24: Insiders 1.10.0](../../insiders/changelog.md#1.10.0)
+
+- **:octicons-package-24: Type <code><autoref identifier="typing.Literal" optional>Literal</autoref>["flat", "tree", False]</code> :material-equal: `False`{ title="default value" }**
+
+The `backlinks` option enables rendering of backlinks within your API documentation.
+
+When an arbitrary section of your documentation links to an API symbol, this link will be collected as a backlink, and rendered below your API symbol. In short, the API symbol will link back to the section that links to it. Such backlinks will help your users navigate the documentation, as they will immediately which functions return a specific symbol, or where a specific symbol is accepted as parameter, etc..
+
+Each backlink is a list of breadcrumbs that represent the navigation, from the root page down to the given section.
+
+The available styles for rendering backlinks are **`flat`** and **`tree`**.
+
+- **`flat`** will render backlinks as a single-layer list. This can lead to repetition of breadcrumbs.
+- **`tree`** will combine backlinks into a tree, to remove repetition of breadcrumbs.
+
+WARNING: **Global-only option.** For now, the option only works when set globally in `mkdocs.yml`.
+
+```yaml title="in mkdocs.yml (global configuration)"
+plugins:
+- mkdocstrings:
+    handlers:
+      python:
+        options:
+          backlinks: tree
+```
+
+<!-- TODO: Add screenshots! -->
+
 [](){#option-extensions}
 ## `extensions`
 
diff --git a/mkdocs.yml b/mkdocs.yml
index 396f738f..ae518a4c 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -160,6 +160,7 @@ plugins:
         - https://mkdocstrings.github.io/griffe/objects.inv
         - https://python-markdown.github.io/objects.inv
         options:
+          backlinks: tree
           docstring_options:
             ignore_init_summary: true
           docstring_section_style: list
diff --git a/src/mkdocstrings_handlers/python/config.py b/src/mkdocstrings_handlers/python/config.py
index a1ecdcd8..af2ac7f7 100644
--- a/src/mkdocstrings_handlers/python/config.py
+++ b/src/mkdocstrings_handlers/python/config.py
@@ -386,6 +386,14 @@ class PythonInputOptions:
         ),
     ] = "brief"
 
+    backlinks: Annotated[
+        Literal["flat", "tree", False],
+        Field(
+            group="general",
+            description="Whether to render backlinks, and how.",
+        ),
+    ] = False
+
     docstring_options: Annotated[
         GoogleStyleOptions | NumpyStyleOptions | SphinxStyleOptions | AutoStyleOptions | None,
         Field(
diff --git a/src/mkdocstrings_handlers/python/handler.py b/src/mkdocstrings_handlers/python/handler.py
index d9db6669..69f228f1 100644
--- a/src/mkdocstrings_handlers/python/handler.py
+++ b/src/mkdocstrings_handlers/python/handler.py
@@ -301,6 +301,7 @@ def update_env(self, config: Any) -> None:  # noqa: ARG002
         self.env.filters["as_functions_section"] = rendering.do_as_functions_section
         self.env.filters["as_classes_section"] = rendering.do_as_classes_section
         self.env.filters["as_modules_section"] = rendering.do_as_modules_section
+        self.env.filters["backlink_tree"] = rendering.do_backlink_tree
         self.env.globals["AutorefsHook"] = rendering.AutorefsHook
         self.env.tests["existing_template"] = lambda template_name: template_name in self.env.list_templates()
 
diff --git a/src/mkdocstrings_handlers/python/rendering.py b/src/mkdocstrings_handlers/python/rendering.py
index 4b8a8ee4..0a670b90 100644
--- a/src/mkdocstrings_handlers/python/rendering.py
+++ b/src/mkdocstrings_handlers/python/rendering.py
@@ -8,11 +8,12 @@
 import subprocess
 import sys
 import warnings
+from collections import defaultdict
 from dataclasses import replace
 from functools import lru_cache
 from pathlib import Path
 from re import Match, Pattern
-from typing import TYPE_CHECKING, Any, Callable, ClassVar, Literal
+from typing import TYPE_CHECKING, Any, Callable, ClassVar, Literal, TypeVar
 
 from griffe import (
     Alias,
@@ -28,11 +29,11 @@
 )
 from jinja2 import TemplateNotFound, pass_context, pass_environment
 from markupsafe import Markup
-from mkdocs_autorefs import AutorefsHookInterface
+from mkdocs_autorefs import AutorefsHookInterface, Backlink, BacklinkCrumb
 from mkdocstrings import get_logger
 
 if TYPE_CHECKING:
-    from collections.abc import Iterator, Sequence
+    from collections.abc import Iterable, Iterator, Sequence
 
     from griffe import Attribute, Class, Function, Module
     from jinja2 import Environment, Template
@@ -210,10 +211,15 @@ def do_format_attribute(
 
     signature = str(attribute_path).strip()
     if annotations and attribute.annotation:
-        annotation = template.render(context.parent, expression=attribute.annotation, signature=True)
+        annotation = template.render(
+            context.parent,
+            expression=attribute.annotation,
+            signature=True,
+            backlink_type="returned-by",
+        )
         signature += f": {annotation}"
     if attribute.value:
-        value = template.render(context.parent, expression=attribute.value, signature=True)
+        value = template.render(context.parent, expression=attribute.value, signature=True, backlink_type="used-by")
         signature += f" = {value}"
 
     signature = do_format_code(signature, line_length)
@@ -725,3 +731,45 @@ def get_context(self) -> AutorefsHookInterface.Context:
             filepath=str(filepath),
             lineno=lineno,
         )
+
+
+T = TypeVar("T")
+Tree = dict[T, "Tree"]
+CompactTree = dict[tuple[T, ...], "CompactTree"]
+_rtree = lambda: defaultdict(_rtree)  # type: ignore[has-type,var-annotated]  # noqa: E731
+
+
+def _tree(data: Iterable[tuple[T, ...]]) -> Tree:
+    new_tree = _rtree()
+    for nav in data:
+        *path, leaf = nav
+        node = new_tree
+        for key in path:
+            node = node[key]
+        node[leaf] = _rtree()
+    return new_tree
+
+
+def _compact_tree(tree: Tree) -> CompactTree:
+    new_tree = _rtree()
+    for key, value in tree.items():
+        child = _compact_tree(value)
+        if len(child) == 1:
+            child_key, child_value = next(iter(child.items()))
+            new_key = (key, *child_key)
+            new_tree[new_key] = child_value
+        else:
+            new_tree[(key,)] = child
+    return new_tree
+
+
+def do_backlink_tree(backlinks: list[Backlink]) -> CompactTree[BacklinkCrumb]:
+    """Build a tree of backlinks.
+
+    Parameters:
+        backlinks: The list of backlinks.
+
+    Returns:
+        A tree of backlinks.
+    """
+    return _compact_tree(_tree(backlink.crumbs for backlink in backlinks))
diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/attribute.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/attribute.html.jinja
index c13bb641..3217b4f6 100644
--- a/src/mkdocstrings_handlers/python/templates/material/_base/attribute.html.jinja
+++ b/src/mkdocstrings_handlers/python/templates/material/_base/attribute.html.jinja
@@ -113,6 +113,10 @@ Context:
             {% include "docstring"|get_template with context %}
           {% endwith %}
         {% endblock docstring %}
+
+        {% if config.backlinks %}
+          <backlinks identifier="{{ html_id }}" handler="python" />
+        {% endif %}
       {% endblock contents %}
     </div>
 
diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/backlinks.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/backlinks.html.jinja
new file mode 100644
index 00000000..2ab16038
--- /dev/null
+++ b/src/mkdocstrings_handlers/python/templates/material/_base/backlinks.html.jinja
@@ -0,0 +1,17 @@
+{#- Template for backlinks.
+
+This template renders backlinks.
+
+Context:
+  backlinks (Mapping[str, Iterable[str]]): The backlinks to render.
+  config (dict): The configuration options.
+  verbose_type (Mapping[str, str]): The verbose backlink types.
+  default_crumb (BacklinkCrumb): A default, empty crumb.
+-#}
+
+{% block logs scoped %}
+  {#- Logging block.
+
+  This block can be used to log debug messages, deprecation messages, warnings, etc.
+  -#}
+{% endblock logs %}
diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/class.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/class.html.jinja
index e8f89fa3..a07a36be 100644
--- a/src/mkdocstrings_handlers/python/templates/material/_base/class.html.jinja
+++ b/src/mkdocstrings_handlers/python/templates/material/_base/class.html.jinja
@@ -130,7 +130,11 @@ Context:
           {% if config.show_bases and class.bases %}
             <p class="doc doc-class-bases">
               Bases: {% for expression in class.bases -%}
-                <code>{% include "expression"|get_template with context %}</code>{% if not loop.last %}, {% endif %}
+                <code>
+                  {%- with backlink_type = "subclassed-by" -%}
+                    {%- include "expression"|get_template with context -%}
+                  {%- endwith -%}
+                </code>{% if not loop.last %}, {% endif %}
               {% endfor -%}
             </p>
           {% endif %}
@@ -159,6 +163,10 @@ Context:
           {% endif %}
         {% endblock docstring %}
 
+        {% if config.backlinks %}
+          <backlinks identifier="{{ html_id }}" handler="python" />
+        {% endif %}
+
         {% block summary scoped %}
           {#- Summary block.
 
diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/other_parameters.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/other_parameters.html.jinja
index 1689dcb8..8b64af1b 100644
--- a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/other_parameters.html.jinja
+++ b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/other_parameters.html.jinja
@@ -36,7 +36,7 @@ Context:
             <td><code>{{ parameter.name }}</code></td>
             <td>
               {% if parameter.annotation %}
-                {% with expression = parameter.annotation %}
+                {% with expression = parameter.annotation, backlink_type = "used-by" %}
                   <code>{% include "expression"|get_template with context %}</code>
                 {% endwith %}
               {% endif %}
@@ -60,7 +60,7 @@ Context:
         <li class="doc-section-item field-body">
           <b><code>{{ parameter.name }}</code></b>
           {% if parameter.annotation %}
-            {% with expression = parameter.annotation %}
+            {% with expression = parameter.annotation, backlink_type = "used-by" %}
               (<code>{% include "expression"|get_template with context %}</code>)
             {% endwith %}
           {% endif %}
@@ -94,7 +94,7 @@ Context:
                 {% if parameter.annotation %}
                   <span class="doc-param-annotation">
                     <b>{{ lang.t("TYPE:") }}</b>
-                    {% with expression = parameter.annotation %}
+                    {% with expression = parameter.annotation, backlink_type = "used-by" %}
                       <code>{% include "expression"|get_template with context %}</code>
                     {% endwith %}
                   </span>
diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/parameters.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/parameters.html.jinja
index d4e9acb8..ae8fb7a3 100644
--- a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/parameters.html.jinja
+++ b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/parameters.html.jinja
@@ -51,7 +51,7 @@ Context:
             </td>
             <td>
               {% if parameter.annotation %}
-                {% with expression = parameter.annotation %}
+                {% with expression = parameter.annotation, backlink_type = "used-by" %}
                   <code>{% include "expression"|get_template with context %}</code>
                 {% endwith %}
               {% endif %}
@@ -63,7 +63,7 @@ Context:
             </td>
             <td>
               {% if parameter.default %}
-                {% with expression = parameter.default %}
+                {% with expression = parameter.default, backlink_type = "used-by" %}
                   <code>{% include "expression"|get_template with context %}</code>
                 {% endwith %}
               {% else %}
@@ -96,10 +96,10 @@ Context:
             <b><code>{{ parameter.name }}</code></b>
           {% endif %}
           {% if parameter.annotation %}
-            {% with expression = parameter.annotation %}
+            {% with expression = parameter.annotation, backlink_type = "used-by" %}
               (<code>{% include "expression"|get_template with context %}</code>
               {%- if parameter.default %}, {{ lang.t("default:") }}
-                {% with expression = parameter.default %}
+                {% with expression = parameter.default, backlink_type = "used-by" %}
                   <code>{% include "expression"|get_template with context %}</code>
                 {% endwith %}
               {% endif %})
@@ -149,7 +149,7 @@ Context:
                 {% if parameter.annotation %}
                   <span class="doc-param-annotation">
                     <b>{{ lang.t("TYPE:") }}</b>
-                    {% with expression = parameter.annotation %}
+                    {% with expression = parameter.annotation, backlink_type = "used-by" %}
                       <code>{% include "expression"|get_template with context %}</code>
                     {% endwith %}
                   </span>
@@ -157,7 +157,7 @@ Context:
                 {% if parameter.default %}
                   <span class="doc-param-default">
                     <b>{{ lang.t("DEFAULT:") }}</b>
-                    {% with expression = parameter.default %}
+                    {% with expression = parameter.default, backlink_type = "used-by" %}
                       <code>{% include "expression"|get_template with context %}</code>
                     {% endwith %}
                   </span>
diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/raises.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/raises.html.jinja
index d734e94a..1e1d5006 100644
--- a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/raises.html.jinja
+++ b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/raises.html.jinja
@@ -34,7 +34,7 @@ Context:
           <tr class="doc-section-item">
             <td>
               {% if raises.annotation %}
-                {% with expression = raises.annotation %}
+                {% with expression = raises.annotation, backlink_type = "raised-by" %}
                   <code>{% include "expression"|get_template with context %}</code>
                 {% endwith %}
               {% endif %}
@@ -57,7 +57,7 @@ Context:
       {% for raises in section.value %}
         <li class="doc-section-item field-body">
           {% if raises.annotation %}
-            {% with expression = raises.annotation %}
+            {% with expression = raises.annotation, backlink_type = "raised-by" %}
               <code>{% include "expression"|get_template with context %}</code>
             {% endwith %}
             –
@@ -84,7 +84,7 @@ Context:
           <tr class="doc-section-item">
             <td>
               <span class="doc-raises-annotation">
-                {% with expression = raises.annotation %}
+                {% with expression = raises.annotation, backlink_type = "raised-by" %}
                   <code>{% include "expression"|get_template with context %}</code>
                 {% endwith %}
               </span>
diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/receives.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/receives.html.jinja
index 3b618c66..a447b216 100644
--- a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/receives.html.jinja
+++ b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/receives.html.jinja
@@ -37,7 +37,7 @@ Context:
             {% if name_column %}<td>{% if receives.name %}<code>{{ receives.name }}</code>{% endif %}</td>{% endif %}
             <td>
               {% if receives.annotation %}
-                {% with expression = receives.annotation %}
+                {% with expression = receives.annotation, backlink_type = "received-by" %}
                   <code>{% include "expression"|get_template with context %}</code>
                 {% endwith %}
               {% endif %}
@@ -61,7 +61,7 @@ Context:
         <li class="doc-section-item field-body">
           {% if receives.name %}<b><code>{{ receives.name }}</code></b>{% endif %}
           {% if receives.annotation %}
-            {% with expression = receives.annotation %}
+            {% with expression = receives.annotation, backlink_type = "received-by" %}
               {% if receives.name %} ({% endif %}
               <code>{% include "expression"|get_template with context %}</code>
               {% if receives.name %}){% endif %}
@@ -93,7 +93,7 @@ Context:
                 <code>{{ receives.name }}</code>
               {% elif receives.annotation %}
                 <span class="doc-receives-annotation">
-                  {% with expression = receives.annotation %}
+                  {% with expression = receives.annotation, backlink_type = "received-by" %}
                     <code>{% include "expression"|get_template with context %}</code>
                   {% endwith %}
                 </span>
@@ -107,7 +107,7 @@ Context:
                 <p>
                   <span class="doc-receives-annotation">
                     <b>{{ lang.t("TYPE:") }}</b>
-                    {% with expression = receives.annotation %}
+                    {% with expression = receives.annotation, backlink_type = "received-by" %}
                       <code>{% include "expression"|get_template with context %}</code>
                     {% endwith %}
                   </span>
diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/returns.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/returns.html.jinja
index af61fce5..30540e66 100644
--- a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/returns.html.jinja
+++ b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/returns.html.jinja
@@ -37,7 +37,7 @@ Context:
             {% if name_column %}<td>{% if returns.name %}<code>{{ returns.name }}</code>{% endif %}</td>{% endif %}
             <td>
               {% if returns.annotation %}
-                {% with expression = returns.annotation %}
+                {% with expression = returns.annotation, backlink_type = "returned-by" %}
                   <code>{% include "expression"|get_template with context %}</code>
                 {% endwith %}
               {% endif %}
@@ -61,7 +61,7 @@ Context:
         <li class="doc-section-item field-body">
           {% if returns.name %}<b><code>{{ returns.name }}</code></b>{% endif %}
           {% if returns.annotation %}
-            {% with expression = returns.annotation %}
+            {% with expression = returns.annotation, backlink_type = "returned-by" %}
               {% if returns.name %} ({% endif %}
               <code>{% include "expression"|get_template with context %}</code>
               {% if returns.name %}){% endif %}
@@ -93,7 +93,7 @@ Context:
                 <code>{{ returns.name }}</code>
               {% elif returns.annotation %}
                 <span class="doc-returns-annotation">
-                  {% with expression = returns.annotation %}
+                  {% with expression = returns.annotation, backlink_type = "returned-by" %}
                     <code>{% include "expression"|get_template with context %}</code>
                   {% endwith %}
                 </span>
@@ -107,7 +107,7 @@ Context:
                 <p>
                   <span class="doc-returns-annotation">
                     <b>{{ lang.t("TYPE:") }}</b>
-                    {% with expression = returns.annotation %}
+                    {% with expression = returns.annotation, backlink_type = "returned-by" %}
                       <code>{% include "expression"|get_template with context %}</code>
                     {% endwith %}
                   </span>
diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/warns.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/warns.html.jinja
index 782c0cdf..814e3020 100644
--- a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/warns.html.jinja
+++ b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/warns.html.jinja
@@ -34,7 +34,7 @@ Context:
           <tr class="doc-section-item">
             <td>
               {% if warns.annotation %}
-                {% with expression = warns.annotation %}
+                {% with expression = warns.annotation, backlink_type = "emitted-by" %}
                   <code>{% include "expression"|get_template with context %}</code>
                 {% endwith %}
               {% endif %}
@@ -57,7 +57,7 @@ Context:
       {% for warns in section.value %}
         <li class="doc-section-item field-body">
           {% if warns.annotation %}
-            {% with expression = warns.annotation %}
+            {% with expression = warns.annotation, backlink_type = "emitted-by" %}
               <code>{% include "expression"|get_template with context %}</code>
             {% endwith %}
             –
@@ -84,7 +84,7 @@ Context:
           <tr class="doc-section-item">
             <td>
               <span class="doc-warns-annotation">
-                {% with expression = warns.annotation %}
+                {% with expression = warns.annotation, backlink_type = "emitted-by" %}
                   <code>{% include "expression"|get_template with context %}</code>
                 {% endwith %}
               </span>
diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/yields.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/yields.html.jinja
index 6d3cfa14..01b8b9e5 100644
--- a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/yields.html.jinja
+++ b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/yields.html.jinja
@@ -37,7 +37,7 @@ Context:
             {% if name_column %}<td>{% if yields.name %}<code>{{ yields.name }}</code>{% endif %}</td>{% endif %}
             <td>
               {% if yields.annotation %}
-                {% with expression = yields.annotation %}
+                {% with expression = yields.annotation, backlink_type = "yielded-by" %}
                   <code>{% include "expression"|get_template with context %}</code>
                 {% endwith %}
               {% endif %}
@@ -61,7 +61,7 @@ Context:
         <li class="doc-section-item field-body">
           {% if yields.name %}<b><code>{{ yields.name }}</code></b>{% endif %}
           {% if yields.annotation %}
-            {% with expression = yields.annotation %}
+            {% with expression = yields.annotation, backlink_type = "yielded-by" %}
               {% if yields.name %} ({% endif %}
               <code>{% include "expression"|get_template with context %}</code>
               {% if yields.name %}){% endif %}
@@ -93,7 +93,7 @@ Context:
                 <code>{{ yields.name }}</code>
               {% elif yields.annotation %}
                 <span class="doc-yields-annotation">
-                  {% with expression = yields.annotation %}
+                  {% with expression = yields.annotation, backlink_type = "yielded-by" %}
                     <code>{% include "expression"|get_template with context %}</code>
                   {% endwith %}
                 </span>
@@ -107,7 +107,7 @@ Context:
                 <p>
                   <span class="doc-yields-annotation">
                     <b>{{ lang.t("TYPE:") }}:</b>
-                    {% with expression = yields.annotation %}
+                    {% with expression = yields.annotation, backlink_type = "yielded-by" %}
                       <code>{% include "expression"|get_template with context %}</code>
                     {% endwith %}
                   </span>
diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/expression.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/expression.html.jinja
index 781d46c7..d49e43be 100644
--- a/src/mkdocstrings_handlers/python/templates/material/_base/expression.html.jinja
+++ b/src/mkdocstrings_handlers/python/templates/material/_base/expression.html.jinja
@@ -11,7 +11,7 @@ which is a tree-like structure representing a Python expression.
   -#}
 {% endblock logs %}
 
-{%- macro crossref(name, annotation_path) -%}
+{%- macro crossref(name, annotation_path, backlink_type="") -%}
   {#- Output a cross-reference.
 
   This macro outputs a cross-reference to the given name.
@@ -35,11 +35,11 @@ which is a tree-like structure representing a Python expression.
       {{ prefix }}
       {%- if not signature -%}
         {#- Always render cross-references outside of signatures. We don't need to stash them. -#}
-        <autoref identifier="{{ path }}" optional{% if title != path %} hover{% endif %}>{{ title }}</autoref>
+        <autoref identifier="{{ path }}"{% if backlink_type %} backlink-type="{{ backlink_type }}" backlink-anchor="{{ html_id }}"{% endif %} optional{% if title != path %} hover{% endif %}>{{ title }}</autoref>
       {%- elif config.signature_crossrefs -%}
         {#- We're in a signature and cross-references are enabled, we must render one and stash it. -#}
         {%- filter stash_crossref(length=title|length) -%}
-          <autoref identifier="{{ path }}" optional{% if title != path %} hover{% endif %}>{{ title }}</autoref>
+          <autoref identifier="{{ path }}"{% if backlink_type %} backlink-type="{{ backlink_type }}" backlink-anchor="{{ html_id }}"{% endif %} optional{% if title != path %} hover{% endif %}>{{ title }}</autoref>
         {%- endfilter -%}
       {%- else -%}
         {#- We're in a signature but cross-references are disabled, we just render the title. -#}
@@ -72,7 +72,7 @@ which is a tree-like structure representing a Python expression.
   {%- endif -%}
 {%- endmacro -%}
 
-{%- macro render(expression, annotations_path) -%}
+{%- macro render(expression, annotations_path, backlink_type="") -%}
   {#- Render an expression.
 
   Parameters:
@@ -85,13 +85,13 @@ which is a tree-like structure representing a Python expression.
   {%- if expression is string -%}
     {%- if signature -%}{{ expression|safe }}{%- else -%}{{ expression }}{%- endif -%}
   {%- elif expression.classname == "ExprName" -%}
-    {{ crossref(expression, annotations_path) }}
+    {{ crossref(expression, annotations_path, backlink_type) }}
   {%- elif config.unwrap_annotated and expression.classname == "ExprSubscript" and expression.canonical_path in ("typing.Annotated", "typing_extensions.Annotated") -%}
     {{ render(expression.slice.elements[0], annotations_path) }}
   {%- elif expression.classname == "ExprAttribute" -%}
     {%- if annotations_path == "brief" -%}
       {%- if expression.last.is_enum_value -%}
-        {{ crossref(expression.last.parent, "brief") }}.value
+        {{ crossref(expression.last.parent, "brief", backlink_type) }}.value
       {%- else -%}
         {{ render(expression.last, "brief") }}
       {%- endif -%}
@@ -116,4 +116,4 @@ which is a tree-like structure representing a Python expression.
   {%- endif -%}
 {%- endmacro -%}
 
-{{ render(expression, config.annotations_path) }}
+{{ render(expression, config.annotations_path, backlink_type|default("")) }}
diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/function.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/function.html.jinja
index b475cf1b..4adcf3bd 100644
--- a/src/mkdocstrings_handlers/python/templates/material/_base/function.html.jinja
+++ b/src/mkdocstrings_handlers/python/templates/material/_base/function.html.jinja
@@ -129,6 +129,10 @@ Context:
           {% endwith %}
         {% endblock docstring %}
 
+        {% if config.backlinks %}
+          <backlinks identifier="{{ html_id }}" handler="python" />
+        {% endif %}
+
         {% block source scoped %}
           {#- Source block.
 
diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/module.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/module.html.jinja
index fa2d2e6a..d49dc76d 100644
--- a/src/mkdocstrings_handlers/python/templates/material/_base/module.html.jinja
+++ b/src/mkdocstrings_handlers/python/templates/material/_base/module.html.jinja
@@ -97,6 +97,10 @@ Context:
           {% endwith %}
         {% endblock docstring %}
 
+        {% if config.backlinks %}
+          <backlinks identifier="{{ html_id }}" handler="python" />
+        {% endif %}
+
         {% block summary scoped %}
           {#- Summary block.
 
diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/signature.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/signature.html.jinja
index ce5c3f04..e414fbe3 100644
--- a/src/mkdocstrings_handlers/python/templates/material/_base/signature.html.jinja
+++ b/src/mkdocstrings_handlers/python/templates/material/_base/signature.html.jinja
@@ -49,7 +49,9 @@ Context:
           {%- set ns.equal = " = " -%}
           {%- if config.separate_signature -%}
             {%- with expression = parameter.annotation -%}
-              {%- set ns.annotation -%}: {% include "expression"|get_template with context %}{%- endset -%}
+              {%- set ns.annotation -%}: {% with backlink_type = "used-by" -%}
+                {%- include "expression"|get_template with context -%}
+              {%- endwith -%}{%- endset -%}
             {%- endwith -%}
           {%- else -%}
             {%- set ns.annotation = ": " + parameter.annotation|safe -%}
@@ -102,7 +104,7 @@ Context:
         {%- if ns.default -%}
           {{ ns.equal }}
           {%- if config.signature_crossrefs and config.separate_signature -%}
-            {%- with expression = parameter.default -%}
+            {%- with expression = parameter.default, backlink_type = "used-by" -%}
               {%- include "expression"|get_template with context -%}
             {%- endwith -%}
           {%- else -%}
@@ -121,7 +123,9 @@ Context:
         and function.annotation
         and not (config.merge_init_into_class and function.name == "__init__" )
       %} -> {% if config.separate_signature and config.signature_crossrefs -%}
-        {%- with expression = function.annotation %}{% include "expression"|get_template with context %}{%- endwith -%}
+        {%- with expression = function.annotation, backlink_type = "returned-by" -%}
+          {%- include "expression"|get_template with context -%}
+        {%- endwith -%}
       {%- else -%}
         {{ function.annotation|safe }}
       {%- endif -%}
diff --git a/src/mkdocstrings_handlers/python/templates/material/backlinks.html.jinja b/src/mkdocstrings_handlers/python/templates/material/backlinks.html.jinja
new file mode 100644
index 00000000..08ba4922
--- /dev/null
+++ b/src/mkdocstrings_handlers/python/templates/material/backlinks.html.jinja
@@ -0,0 +1 @@
+{% extends "_base/backlinks.html.jinja" %}
diff --git a/src/mkdocstrings_handlers/python/templates/material/style.css b/src/mkdocstrings_handlers/python/templates/material/style.css
index 7e819d8b..e5e150ec 100644
--- a/src/mkdocstrings_handlers/python/templates/material/style.css
+++ b/src/mkdocstrings_handlers/python/templates/material/style.css
@@ -41,6 +41,28 @@
   font-weight: bold;
 }
 
+/* Backlinks crumb separator. */
+.doc-backlink-crumb {
+  display: inline-flex;
+  gap: .2rem;
+  white-space: nowrap;
+  align-items: center;
+  vertical-align: middle;
+}
+.doc-backlink-crumb:not(:first-child)::before {
+  background-color: var(--md-default-fg-color--lighter);
+  content: "";
+  display: inline;
+  height: 1rem;
+  --md-path-icon: url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M8.59 16.58 13.17 12 8.59 7.41 10 6l6 6-6 6z"/></svg>');
+  -webkit-mask-image: var(--md-path-icon);
+  mask-image: var(--md-path-icon);
+  width: 1rem;
+}
+.doc-backlink-crumb.last {
+  font-weight: bold;
+}
+
 /* Symbols in Navigation and ToC. */
 :root, :host,
 [data-md-color-scheme="default"] {
@@ -82,7 +104,8 @@ code.doc-symbol {
   font-weight: bold;
 }
 
-code.doc-symbol-parameter {
+code.doc-symbol-parameter,
+a code.doc-symbol-parameter {
   color: var(--doc-symbol-parameter-fg-color);
   background-color: var(--doc-symbol-parameter-bg-color);
 }
@@ -91,7 +114,8 @@ code.doc-symbol-parameter::after {
   content: "param";
 }
 
-code.doc-symbol-attribute {
+code.doc-symbol-attribute,
+a code.doc-symbol-attribute {
   color: var(--doc-symbol-attribute-fg-color);
   background-color: var(--doc-symbol-attribute-bg-color);
 }
@@ -100,7 +124,8 @@ code.doc-symbol-attribute::after {
   content: "attr";
 }
 
-code.doc-symbol-function {
+code.doc-symbol-function,
+a code.doc-symbol-function {
   color: var(--doc-symbol-function-fg-color);
   background-color: var(--doc-symbol-function-bg-color);
 }
@@ -109,7 +134,8 @@ code.doc-symbol-function::after {
   content: "func";
 }
 
-code.doc-symbol-method {
+code.doc-symbol-method,
+a code.doc-symbol-method {
   color: var(--doc-symbol-method-fg-color);
   background-color: var(--doc-symbol-method-bg-color);
 }
@@ -118,7 +144,8 @@ code.doc-symbol-method::after {
   content: "meth";
 }
 
-code.doc-symbol-class {
+code.doc-symbol-class,
+a code.doc-symbol-class {
   color: var(--doc-symbol-class-fg-color);
   background-color: var(--doc-symbol-class-bg-color);
 }
@@ -127,7 +154,8 @@ code.doc-symbol-class::after {
   content: "class";
 }
 
-code.doc-symbol-module {
+code.doc-symbol-module,
+a code.doc-symbol-module {
   color: var(--doc-symbol-module-fg-color);
   background-color: var(--doc-symbol-module-bg-color);
 }
diff --git a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/other_parameters.html.jinja b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/other_parameters.html.jinja
index beb4f678..657b21b4 100644
--- a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/other_parameters.html.jinja
+++ b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/other_parameters.html.jinja
@@ -32,7 +32,7 @@ Context:
             <li>
               <b><code>{{ parameter.name }}</code></b>
               {% if parameter.annotation %}
-                {% with expression = parameter.annotation %}
+                {% with expression = parameter.annotation, backlink_type = "used-by" %}
                   (<code>{% include "expression"|get_template with context %}</code>)
                 {% endwith %}
               {% endif %}
diff --git a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/parameters.html.jinja b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/parameters.html.jinja
index 295ab082..6017a8cb 100644
--- a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/parameters.html.jinja
+++ b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/parameters.html.jinja
@@ -32,10 +32,10 @@ Context:
             <li>
               <b><code>{{ parameter.name }}</code></b>
               {% if parameter.annotation %}
-                {% with expression = parameter.annotation %}
+                {% with expression = parameter.annotation, backlink_type = "used-by" %}
                   (<code>{% include "expression"|get_template with context %}</code>
                   {%- if parameter.default %}, {{ lang.t("default:") }}
-                    {% with expression = parameter.default %}
+                    {% with expression = parameter.default, backlink_type = "used-by" %}
                       <code>{% include "expression"|get_template with context %}</code>
                     {% endwith %}
                   {% endif %})
diff --git a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/raises.html.jinja b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/raises.html.jinja
index 7fa8cd86..11f695e8 100644
--- a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/raises.html.jinja
+++ b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/raises.html.jinja
@@ -31,7 +31,7 @@ Context:
           {% for raises in section.value %}
             <li>
               {% if raises.annotation %}
-                {% with expression = raises.annotation %}
+                {% with expression = raises.annotation, backlink_type = "raised-by" %}
                   <code>{% include "expression"|get_template with context %}</code>
                 {% endwith %}
               {% endif %}
diff --git a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/receives.html.jinja b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/receives.html.jinja
index 9ee189bc..aec9a858 100644
--- a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/receives.html.jinja
+++ b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/receives.html.jinja
@@ -32,7 +32,7 @@ Context:
             <li>
               {% if receives.name %}<b><code>{{ receives.name }}</code></b>{% endif %}
               {% if receives.annotation %}
-                {% with expression = receives.annotation %}
+                {% with expression = receives.annotation, backlink_type = "received-by" %}
                   {% if receives.name %}({% endif %}
                   <code>{% include "expression"|get_template with context %}</code>
                   {% if receives.name %}){% endif %}
diff --git a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/returns.html.jinja b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/returns.html.jinja
index 2dbd21af..3f8bbba4 100644
--- a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/returns.html.jinja
+++ b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/returns.html.jinja
@@ -32,7 +32,7 @@ Context:
             <li>
               {% if returns.name %}<b><code>{{ returns.name }}</code></b>{% endif %}
               {% if returns.annotation %}
-                {% with expression = returns.annotation %}
+                {% with expression = returns.annotation, backlink_type = "returned-by" %}
                   {% if returns.name %}({% endif %}
                   <code>{% include "expression"|get_template with context %}</code>
                   {% if returns.name %}){% endif %}
diff --git a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/warns.html.jinja b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/warns.html.jinja
index 61f3c839..1d465ec9 100644
--- a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/warns.html.jinja
+++ b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/warns.html.jinja
@@ -31,7 +31,7 @@ Context:
           {% for warns in section.value %}
             <li>
               {% if warns.annotation %}
-                {% with expression = warns.annotation %}
+                {% with expression = warns.annotation, backlink_type = "emitted-by" %}
                   <code>{% include "expression"|get_template with context %}</code>
                 {% endwith %}
               {% endif %}
diff --git a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/yields.html.jinja b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/yields.html.jinja
index 0fa6fcbc..70c782b3 100644
--- a/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/yields.html.jinja
+++ b/src/mkdocstrings_handlers/python/templates/readthedocs/_base/docstring/yields.html.jinja
@@ -32,7 +32,7 @@ Context:
             <li>
               {% if yields.name %}<b></code>{{ yields.name }}</code></b>{% endif %}
               {% if yields.annotation %}
-                {% with expression = yields.annotation %}
+                {% with expression = yields.annotation, backlink_type = "yielded-by" %}
                   {% if yields.name %}({% endif %}
                   <code>{% include "expression"|get_template with context %}</code>
                   {% if yields.name %}){% endif %}
diff --git a/tests/snapshots/__init__.py b/tests/snapshots/__init__.py
index 4469afed..712cdafe 100644
--- a/tests/snapshots/__init__.py
+++ b/tests/snapshots/__init__.py
@@ -13,7 +13,7 @@
             ("separate_signature", True),
             ("show_signature_annotations", True),
             ("signature_crossrefs", True),
-        ): external("955e5111f426*.html"),
+        ): external("261a38d7a86b*.html"),
         (
             ("separate_signature", False),
             ("show_signature_annotations", True),
@@ -54,28 +54,20 @@
             ("inherited_members", ("method1",)),
             ("members", False),
         ): external("ab0ddac637b5*.html"),
-        (("filters", None), ("inherited_members", True), ("members", True)): external(
-            "0b1372d7f7c0*.html",
-        ),
-        (("filters", ()), ("inherited_members", False), ("members", True)): external(
-            "59a9e1ffb2f0*.html",
-        ),
+        (("filters", None), ("inherited_members", True), ("members", True)): external("c0f102dbd7d4*.html"),
+        (("filters", ()), ("inherited_members", False), ("members", True)): external("fca72854c849*.html"),
         (
             ("filters", ("!module_attribute",)),
             ("inherited_members", ()),
             ("members", ("module_attribute",)),
         ): external("6d12192d6b4d*.html"),
-        (("filters", ()), ("inherited_members", ()), ("members", False)): external(
-            "366b0537fe06*.html",
-        ),
+        (("filters", ()), ("inherited_members", ()), ("members", False)): external("366b0537fe06*.html"),
         (
             ("filters", ()),
             ("inherited_members", ("method1",)),
             ("members", ("module_attribute",)),
         ): external("e90c3e0c85dd*.html"),
-        (("filters", ()), ("inherited_members", True), ("members", True)): external(
-            "e8be7a9b1410*.html",
-        ),
+        (("filters", ()), ("inherited_members", True), ("members", True)): external("722165bce3ad*.html"),
         (
             ("filters", ("module_attribute",)),
             ("inherited_members", ("method1",)),
@@ -85,15 +77,13 @@
             ("filters", ()),
             ("inherited_members", ("method1",)),
             ("members", True),
-        ): external("d540895f6bf9*.html"),
-        (("filters", ()), ("inherited_members", False), ("members", False)): external(
-            "5cf0130e3b4f*.html",
-        ),
+        ): external("cd51e40cc0dd*.html"),
+        (("filters", ()), ("inherited_members", False), ("members", False)): external("5cf0130e3b4f*.html"),
         (
             ("filters", ("!module_attribute",)),
             ("inherited_members", True),
             ("members", True),
-        ): external("7c988c9e13ef*.html"),
+        ): external("34b16654e7ba*.html"),
         (
             ("filters", ("!module_attribute",)),
             ("inherited_members", False),
@@ -119,17 +109,13 @@
             ("inherited_members", False),
             ("members", ("module_attribute",)),
         ): external("5a9c10410801*.html"),
-        (("filters", ()), ("inherited_members", False), ("members", ())): external(
-            "fba0d78ae23e*.html",
-        ),
+        (("filters", ()), ("inherited_members", False), ("members", ())): external("fba0d78ae23e*.html"),
         (
             ("filters", ("module_attribute",)),
             ("inherited_members", ("method1",)),
             ("members", None),
         ): external("cfcd41685591*.html"),
-        (("filters", ()), ("inherited_members", False), ("members", None)): external(
-            "a2c5be9bd5d1*.html",
-        ),
+        (("filters", ()), ("inherited_members", False), ("members", None)): external("eac5bee59a9e*.html"),
         (
             ("filters", ("module_attribute",)),
             ("inherited_members", ()),
@@ -145,9 +131,7 @@
             ("inherited_members", ("method1",)),
             ("members", ()),
         ): external("4f60da13e2d4*.html"),
-        (("filters", ()), ("inherited_members", True), ("members", ())): external(
-            "c915eb92fd5d*.html",
-        ),
+        (("filters", ()), ("inherited_members", True), ("members", ())): external("c915eb92fd5d*.html"),
         (
             ("filters", ("module_attribute",)),
             ("inherited_members", ()),
@@ -157,21 +141,15 @@
             ("filters", ("!module_attribute",)),
             ("inherited_members", ("method1",)),
             ("members", None),
-        ): external("3d072a22b951*.html"),
-        (("filters", None), ("inherited_members", False), ("members", False)): external(
-            "9bd282a6f2fe*.html",
-        ),
+        ): external("fe1cd23642d4*.html"),
+        (("filters", None), ("inherited_members", False), ("members", False)): external("9bd282a6f2fe*.html"),
         (
             ("filters", None),
             ("inherited_members", ()),
             ("members", ("module_attribute",)),
         ): external("166b8dfab738*.html"),
-        (("filters", None), ("inherited_members", ()), ("members", False)): external(
-            "44e42f27bfe3*.html",
-        ),
-        (("filters", None), ("inherited_members", False), ("members", None)): external(
-            "f7711b8af768*.html",
-        ),
+        (("filters", None), ("inherited_members", ()), ("members", False)): external("44e42f27bfe3*.html"),
+        (("filters", None), ("inherited_members", False), ("members", None)): external("0f046dea611f*.html"),
         (
             ("filters", ("!module_attribute",)),
             ("inherited_members", True),
@@ -182,14 +160,12 @@
             ("inherited_members", True),
             ("members", False),
         ): external("f3f3acb6b51b*.html"),
-        (("filters", None), ("inherited_members", ()), ("members", True)): external(
-            "347d4ffe2cb3*.html",
-        ),
+        (("filters", None), ("inherited_members", ()), ("members", True)): external("dcf34c2f7269*.html"),
         (
             ("filters", ("!module_attribute",)),
             ("inherited_members", True),
             ("members", None),
-        ): external("ba51e100acd4*.html"),
+        ): external("8733f7fb7b6d*.html"),
         (
             ("filters", ("!module_attribute",)),
             ("inherited_members", False),
@@ -215,12 +191,8 @@
             ("inherited_members", False),
             ("members", ()),
         ): external("d5a6bf59c663*.html"),
-        (("filters", None), ("inherited_members", ()), ("members", None)): external(
-            "88855b028417*.html",
-        ),
-        (("filters", ()), ("inherited_members", True), ("members", None)): external(
-            "981438492e38*.html",
-        ),
+        (("filters", None), ("inherited_members", ()), ("members", None)): external("fd291f98ca28*.html"),
+        (("filters", ()), ("inherited_members", True), ("members", None)): external("14bca0e5703b*.html"),
         (
             ("filters", ()),
             ("inherited_members", False),
@@ -230,25 +202,23 @@
             ("filters", None),
             ("inherited_members", ("method1",)),
             ("members", None),
-        ): external("ae74b5980f9b*.html"),
+        ): external("43d819f94dc7*.html"),
         (
             ("filters", ("module_attribute",)),
             ("inherited_members", True),
             ("members", ()),
         ): external("95f8e480937f*.html"),
-        (("filters", None), ("inherited_members", False), ("members", True)): external(
-            "831198033381*.html",
-        ),
+        (("filters", None), ("inherited_members", False), ("members", True)): external("f4150843096a*.html"),
         (
             ("filters", ("module_attribute",)),
             ("inherited_members", True),
             ("members", True),
-        ): external("052c34f22e4c*.html"),
+        ): external("3c21330afd65*.html"),
         (
             ("filters", ("!module_attribute",)),
             ("inherited_members", False),
             ("members", None),
-        ): external("cdc8126d78b6*.html"),
+        ): external("d55652702606*.html"),
         (
             ("filters", ("module_attribute",)),
             ("inherited_members", ("method1",)),
@@ -259,9 +229,7 @@
             ("inherited_members", True),
             ("members", ("module_attribute",)),
         ): external("96cf94f4822a*.html"),
-        (("filters", None), ("inherited_members", True), ("members", ())): external(
-            "ce06da7f07b3*.html",
-        ),
+        (("filters", None), ("inherited_members", True), ("members", ())): external("ce06da7f07b3*.html"),
         (
             ("filters", ("!module_attribute",)),
             ("inherited_members", ()),
@@ -271,15 +239,13 @@
             ("filters", None),
             ("inherited_members", ("method1",)),
             ("members", True),
-        ): external("7d5fe6653919*.html"),
+        ): external("75b69b702f3b*.html"),
         (
             ("filters", ("!module_attribute",)),
             ("inherited_members", True),
             ("members", False),
         ): external("d726cb8367d9*.html"),
-        (("filters", None), ("inherited_members", False), ("members", ())): external(
-            "fb770e6537bc*.html",
-        ),
+        (("filters", None), ("inherited_members", False), ("members", ())): external("fb770e6537bc*.html"),
         (
             ("filters", ("module_attribute",)),
             ("inherited_members", True),
@@ -294,15 +260,13 @@
             ("filters", ("module_attribute",)),
             ("inherited_members", ()),
             ("members", True),
-        ): external("46e56f39b10d*.html"),
+        ): external("13334b5b4fcf*.html"),
         (
             ("filters", ()),
             ("inherited_members", ()),
             ("members", ("module_attribute",)),
         ): external("388a13d71284*.html"),
-        (("filters", None), ("inherited_members", True), ("members", False)): external(
-            "3f5d794823a4*.html",
-        ),
+        (("filters", None), ("inherited_members", True), ("members", False)): external("3f5d794823a4*.html"),
         (
             ("filters", ()),
             ("inherited_members", True),
@@ -317,7 +281,7 @@
             ("filters", ("module_attribute",)),
             ("inherited_members", False),
             ("members", True),
-        ): external("052e71e7e9d5*.html"),
+        ): external("cd3e45851714*.html"),
         (
             ("filters", None),
             ("inherited_members", ("method1",)),
@@ -327,7 +291,7 @@
             ("filters", ("!module_attribute",)),
             ("inherited_members", ()),
             ("members", True),
-        ): external("b4b490164ab1*.html"),
+        ): external("84193b3c9f5d*.html"),
         (
             ("filters", ("!module_attribute",)),
             ("inherited_members", ("method1",)),
@@ -342,21 +306,15 @@
             ("filters", ("!module_attribute",)),
             ("inherited_members", ()),
             ("members", None),
-        ): external("728c13446301*.html"),
-        (("filters", None), ("inherited_members", ()), ("members", ())): external(
-            "f77f1c850398*.html",
-        ),
+        ): external("3935bcf6d71b*.html"),
+        (("filters", None), ("inherited_members", ()), ("members", ())): external("f77f1c850398*.html"),
         (
             ("filters", ("!module_attribute",)),
             ("inherited_members", False),
             ("members", True),
-        ): external("0fac4f5e7f45*.html"),
-        (("filters", None), ("inherited_members", True), ("members", None)): external(
-            "cc19537fdba4*.html",
-        ),
-        (("filters", ()), ("inherited_members", ()), ("members", None)): external(
-            "e6a9b76f268c*.html",
-        ),
+        ): external("fe25ab760039*.html"),
+        (("filters", None), ("inherited_members", True), ("members", None)): external("ea914f1afa9d*.html"),
+        (("filters", ()), ("inherited_members", ()), ("members", None)): external("19f98a747c01*.html"),
         (
             ("filters", ("!module_attribute",)),
             ("inherited_members", ()),
@@ -366,36 +324,30 @@
             ("filters", ("!module_attribute",)),
             ("inherited_members", ("method1",)),
             ("members", True),
-        ): external("0c2924ff976f*.html"),
+        ): external("9720526cf5e4*.html"),
         (
             ("filters", ("module_attribute",)),
             ("inherited_members", ()),
             ("members", ("module_attribute",)),
         ): external("f6e292b8358a*.html"),
-        (("filters", ()), ("inherited_members", True), ("members", False)): external(
-            "b0a9b08f1f72*.html",
-        ),
-        (("filters", ()), ("inherited_members", ()), ("members", True)): external(
-            "fb65efbbfc3e*.html",
-        ),
+        (("filters", ()), ("inherited_members", True), ("members", False)): external("b0a9b08f1f72*.html"),
+        (("filters", ()), ("inherited_members", ()), ("members", True)): external("027ef7afeffc*.html"),
         (
             ("filters", ("module_attribute",)),
             ("inherited_members", False),
             ("members", False),
         ): external("710706687213*.html"),
-        (("filters", ()), ("inherited_members", ()), ("members", ())): external(
-            "11598fec2d07*.html",
-        ),
+        (("filters", ()), ("inherited_members", ()), ("members", ())): external("11598fec2d07*.html"),
         (
             ("filters", ("module_attribute",)),
             ("inherited_members", ("method1",)),
             ("members", True),
-        ): external("a1167b14f5a7*.html"),
+        ): external("e8608b0de174*.html"),
         (
             ("filters", ()),
             ("inherited_members", ("method1",)),
             ("members", None),
-        ): external("f848d4a9e516*.html"),
+        ): external("e5dc372374af*.html"),
         (
             ("filters", ("module_attribute",)),
             ("inherited_members", ()),
diff --git a/tests/snapshots/external/fb65efbbfc3ef9c2a06e6f539f8a75bec4276e61254539632a1d5f8f2c6c3452.html b/tests/snapshots/external/027ef7afeffc56219a09298c7db30f473c4dfdda12d99a171e9c76098c316067.html
similarity index 97%
rename from tests/snapshots/external/fb65efbbfc3ef9c2a06e6f539f8a75bec4276e61254539632a1d5f8f2c6c3452.html
rename to tests/snapshots/external/027ef7afeffc56219a09298c7db30f473c4dfdda12d99a171e9c76098c316067.html
index 3cec9af8..ccfa8d64 100644
--- a/tests/snapshots/external/fb65efbbfc3ef9c2a06e6f539f8a75bec4276e61254539632a1d5f8f2c6c3452.html
+++ b/tests/snapshots/external/027ef7afeffc56219a09298c7db30f473c4dfdda12d99a171e9c76098c316067.html
@@ -264,7 +264,7 @@ <h2 class="doc doc-heading" id="members_package.Subclass">
      <p class="doc doc-class-bases">
       Bases:
       <code>
-       <autoref hover="" identifier="members_package.Class" optional="">
+       <autoref backlink-anchor="members_package.Subclass" backlink-type="subclassed-by" hover="" identifier="members_package.Class" optional="">
         Class
        </autoref>
       </code>
diff --git a/tests/snapshots/external/f7711b8af7689b331209f8c034c8cc3a2ec894372644a8eaee597418e9b55b3c.html b/tests/snapshots/external/0f046dea611f6c9e90b8eaed720f22af372394971808e2a5d1b3a12286f1ec76.html
similarity index 97%
rename from tests/snapshots/external/f7711b8af7689b331209f8c034c8cc3a2ec894372644a8eaee597418e9b55b3c.html
rename to tests/snapshots/external/0f046dea611f6c9e90b8eaed720f22af372394971808e2a5d1b3a12286f1ec76.html
index 522fd1c1..332a5c53 100644
--- a/tests/snapshots/external/f7711b8af7689b331209f8c034c8cc3a2ec894372644a8eaee597418e9b55b3c.html
+++ b/tests/snapshots/external/0f046dea611f6c9e90b8eaed720f22af372394971808e2a5d1b3a12286f1ec76.html
@@ -264,7 +264,7 @@ <h2 class="doc doc-heading" id="members_package.Subclass">
      <p class="doc doc-class-bases">
       Bases:
       <code>
-       <autoref hover="" identifier="members_package.Class" optional="">
+       <autoref backlink-anchor="members_package.Subclass" backlink-type="subclassed-by" hover="" identifier="members_package.Class" optional="">
         Class
        </autoref>
       </code>
diff --git a/tests/snapshots/external/46e56f39b10d1e8ee4017bc11457bf76d169fc80b3d3e465213671b7f6e548eb.html b/tests/snapshots/external/13334b5b4fcf7267539b9eb99ca2ab79c66766ec6f35383f4bfcb6a8d9e2a116.html
similarity index 94%
rename from tests/snapshots/external/46e56f39b10d1e8ee4017bc11457bf76d169fc80b3d3e465213671b7f6e548eb.html
rename to tests/snapshots/external/13334b5b4fcf7267539b9eb99ca2ab79c66766ec6f35383f4bfcb6a8d9e2a116.html
index 36f35fb4..a7eb7dce 100644
--- a/tests/snapshots/external/46e56f39b10d1e8ee4017bc11457bf76d169fc80b3d3e465213671b7f6e548eb.html
+++ b/tests/snapshots/external/13334b5b4fcf7267539b9eb99ca2ab79c66766ec6f35383f4bfcb6a8d9e2a116.html
@@ -78,7 +78,7 @@ <h2 class="doc doc-heading" id="members_package.Subclass">
      <p class="doc doc-class-bases">
       Bases:
       <code>
-       <autoref hover="" identifier="members_package.Class" optional="">
+       <autoref backlink-anchor="members_package.Subclass" backlink-type="subclassed-by" hover="" identifier="members_package.Class" optional="">
         Class
        </autoref>
       </code>
diff --git a/tests/snapshots/external/981438492e387bc82b23f09e3c5e0b452db5a1ffd88e52479db2b52a170fd8f9.html b/tests/snapshots/external/14bca0e5703be9cab876200d88cccd1d728d1bdfef7cbfac751af212e00a8663.html
similarity index 98%
rename from tests/snapshots/external/981438492e387bc82b23f09e3c5e0b452db5a1ffd88e52479db2b52a170fd8f9.html
rename to tests/snapshots/external/14bca0e5703be9cab876200d88cccd1d728d1bdfef7cbfac751af212e00a8663.html
index 574ec87c..b2490df7 100644
--- a/tests/snapshots/external/981438492e387bc82b23f09e3c5e0b452db5a1ffd88e52479db2b52a170fd8f9.html
+++ b/tests/snapshots/external/14bca0e5703be9cab876200d88cccd1d728d1bdfef7cbfac751af212e00a8663.html
@@ -264,7 +264,7 @@ <h2 class="doc doc-heading" id="members_package.Subclass">
      <p class="doc doc-class-bases">
       Bases:
       <code>
-       <autoref hover="" identifier="members_package.Class" optional="">
+       <autoref backlink-anchor="members_package.Subclass" backlink-type="subclassed-by" hover="" identifier="members_package.Class" optional="">
         Class
        </autoref>
       </code>
diff --git a/tests/snapshots/external/e6a9b76f268cde81a129e7273038db0ff3fcd73530442a30c48cf01dcbc30aaa.html b/tests/snapshots/external/19f98a747c015a074f3d3362d03ed72f9da9db3aefe969a0d78c4052e7594372.html
similarity index 97%
rename from tests/snapshots/external/e6a9b76f268cde81a129e7273038db0ff3fcd73530442a30c48cf01dcbc30aaa.html
rename to tests/snapshots/external/19f98a747c015a074f3d3362d03ed72f9da9db3aefe969a0d78c4052e7594372.html
index dbcf8c57..9058ed13 100644
--- a/tests/snapshots/external/e6a9b76f268cde81a129e7273038db0ff3fcd73530442a30c48cf01dcbc30aaa.html
+++ b/tests/snapshots/external/19f98a747c015a074f3d3362d03ed72f9da9db3aefe969a0d78c4052e7594372.html
@@ -264,7 +264,7 @@ <h2 class="doc doc-heading" id="members_package.Subclass">
      <p class="doc doc-class-bases">
       Bases:
       <code>
-       <autoref hover="" identifier="members_package.Class" optional="">
+       <autoref backlink-anchor="members_package.Subclass" backlink-type="subclassed-by" hover="" identifier="members_package.Class" optional="">
         Class
        </autoref>
       </code>
diff --git a/tests/snapshots/external/955e5111f4262f280b0787a22dfa46c9ea93c80bc49e1a1de100349341d93fb9.html b/tests/snapshots/external/261a38d7a86b5e959b6d1c165108301963d0170c2189d5aa18bb7c7eade84ea4.html
similarity index 64%
rename from tests/snapshots/external/955e5111f4262f280b0787a22dfa46c9ea93c80bc49e1a1de100349341d93fb9.html
rename to tests/snapshots/external/261a38d7a86b5e959b6d1c165108301963d0170c2189d5aa18bb7c7eade84ea4.html
index ee00ece7..2170787f 100644
--- a/tests/snapshots/external/955e5111f4262f280b0787a22dfa46c9ea93c80bc49e1a1de100349341d93fb9.html
+++ b/tests/snapshots/external/261a38d7a86b5e959b6d1c165108301963d0170c2189d5aa18bb7c7eade84ea4.html
@@ -36,7 +36,7 @@ <h3 class="doc doc-heading" id="signature_package.Class.__init__">
         </span>
        </h3>
        <div class="doc-signature highlight">
-        <pre><span></span><code><span class="fm">__init__</span><span class="p">(</span><span class="nf">a</span><span class="p">:</span> <span class="n"><autoref identifier="int" optional="">int</autoref></span><span class="p">,</span> <span class="n">b</span><span class="p">:</span> <span class="n"><autoref identifier="str" optional="">str</autoref></span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span>
+        <pre><span></span><code><span class="fm">__init__</span><span class="p">(</span><span class="nf">a</span><span class="p">:</span> <span class="n"><autoref backlink-anchor="signature_package.Class.__init__" backlink-type="used-by" identifier="int" optional="">int</autoref></span><span class="p">,</span> <span class="n">b</span><span class="p">:</span> <span class="n"><autoref backlink-anchor="signature_package.Class.__init__" backlink-type="used-by" identifier="str" optional="">str</autoref></span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span>
 </code></pre>
        </div>
        <div class="doc doc-contents">
@@ -56,7 +56,7 @@ <h3 class="doc doc-heading" id="signature_package.Class.method1">
         </span>
        </h3>
        <div class="doc-signature highlight">
-        <pre><span></span><code><span class="nf">method1</span><span class="p">(</span><span class="n">a</span><span class="p">:</span> <span class="n"><autoref identifier="int" optional="">int</autoref></span><span class="p">,</span> <span class="n">b</span><span class="p">:</span> <span class="n"><autoref identifier="str" optional="">str</autoref></span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span>
+        <pre><span></span><code><span class="nf">method1</span><span class="p">(</span><span class="n">a</span><span class="p">:</span> <span class="n"><autoref backlink-anchor="signature_package.Class.method1" backlink-type="used-by" identifier="int" optional="">int</autoref></span><span class="p">,</span> <span class="n">b</span><span class="p">:</span> <span class="n"><autoref backlink-anchor="signature_package.Class.method1" backlink-type="used-by" identifier="str" optional="">str</autoref></span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span>
 </code></pre>
        </div>
        <div class="doc doc-contents">
@@ -79,7 +79,7 @@ <h2 class="doc doc-heading" id="signature_package.module_function">
      </span>
     </h2>
     <div class="doc-signature highlight">
-     <pre><span></span><code><span class="nf">module_function</span><span class="p">(</span><span class="n">a</span><span class="p">:</span> <span class="n"><autoref identifier="int" optional="">int</autoref></span><span class="p">,</span> <span class="n">b</span><span class="p">:</span> <span class="n"><autoref identifier="str" optional="">str</autoref></span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span>
+     <pre><span></span><code><span class="nf">module_function</span><span class="p">(</span><span class="n">a</span><span class="p">:</span> <span class="n"><autoref backlink-anchor="signature_package.module_function" backlink-type="used-by" identifier="int" optional="">int</autoref></span><span class="p">,</span> <span class="n">b</span><span class="p">:</span> <span class="n"><autoref backlink-anchor="signature_package.module_function" backlink-type="used-by" identifier="str" optional="">str</autoref></span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span>
 </code></pre>
     </div>
     <div class="doc doc-contents">
diff --git a/tests/snapshots/external/7c988c9e13efeadd20b911a95cc69973b715cceacdadefc540109aad3c274bde.html b/tests/snapshots/external/34b16654e7baa8e16315cef2919f2eafa51ba39ec28c4c970fe7ea8e2c79f9d2.html
similarity index 98%
rename from tests/snapshots/external/7c988c9e13efeadd20b911a95cc69973b715cceacdadefc540109aad3c274bde.html
rename to tests/snapshots/external/34b16654e7baa8e16315cef2919f2eafa51ba39ec28c4c970fe7ea8e2c79f9d2.html
index 10b98188..8357168e 100644
--- a/tests/snapshots/external/7c988c9e13efeadd20b911a95cc69973b715cceacdadefc540109aad3c274bde.html
+++ b/tests/snapshots/external/34b16654e7baa8e16315cef2919f2eafa51ba39ec28c4c970fe7ea8e2c79f9d2.html
@@ -266,7 +266,7 @@ <h2 class="doc doc-heading" id="members_package.Subclass">
      <p class="doc doc-class-bases">
       Bases:
       <code>
-       <autoref hover="" identifier="members_package.Class" optional="">
+       <autoref backlink-anchor="members_package.Subclass" backlink-type="subclassed-by" hover="" identifier="members_package.Class" optional="">
         Class
        </autoref>
       </code>
diff --git a/tests/snapshots/external/728c1344630190ac84514ebd8e5ae2d95ba8685e16d2c79749f675b5b2a6cea5.html b/tests/snapshots/external/3935bcf6d71b58daa0e4512cbf3f53e19516885fb65d0bd760c12aadd021507f.html
similarity index 97%
rename from tests/snapshots/external/728c1344630190ac84514ebd8e5ae2d95ba8685e16d2c79749f675b5b2a6cea5.html
rename to tests/snapshots/external/3935bcf6d71b58daa0e4512cbf3f53e19516885fb65d0bd760c12aadd021507f.html
index d6ac202a..793f43a4 100644
--- a/tests/snapshots/external/728c1344630190ac84514ebd8e5ae2d95ba8685e16d2c79749f675b5b2a6cea5.html
+++ b/tests/snapshots/external/3935bcf6d71b58daa0e4512cbf3f53e19516885fb65d0bd760c12aadd021507f.html
@@ -235,7 +235,7 @@ <h2 class="doc doc-heading" id="members_package.Subclass">
      <p class="doc doc-class-bases">
       Bases:
       <code>
-       <autoref hover="" identifier="members_package.Class" optional="">
+       <autoref backlink-anchor="members_package.Subclass" backlink-type="subclassed-by" hover="" identifier="members_package.Class" optional="">
         Class
        </autoref>
       </code>
diff --git a/tests/snapshots/external/052c34f22e4c711b1f13f53085cdd5e8edcfae4bdc1d8cb7f2ff76cd1c46cce5.html b/tests/snapshots/external/3c21330afd6529769164afe388e9385a9fddb3ae628124965e0c7b81932a0c63.html
similarity index 94%
rename from tests/snapshots/external/052c34f22e4c711b1f13f53085cdd5e8edcfae4bdc1d8cb7f2ff76cd1c46cce5.html
rename to tests/snapshots/external/3c21330afd6529769164afe388e9385a9fddb3ae628124965e0c7b81932a0c63.html
index e1a7d15c..26cb9e39 100644
--- a/tests/snapshots/external/052c34f22e4c711b1f13f53085cdd5e8edcfae4bdc1d8cb7f2ff76cd1c46cce5.html
+++ b/tests/snapshots/external/3c21330afd6529769164afe388e9385a9fddb3ae628124965e0c7b81932a0c63.html
@@ -78,7 +78,7 @@ <h2 class="doc doc-heading" id="members_package.Subclass">
      <p class="doc doc-class-bases">
       Bases:
       <code>
-       <autoref hover="" identifier="members_package.Class" optional="">
+       <autoref backlink-anchor="members_package.Subclass" backlink-type="subclassed-by" hover="" identifier="members_package.Class" optional="">
         Class
        </autoref>
       </code>
diff --git a/tests/snapshots/external/ae74b5980f9b6996ed6e112d53168fde16c32d92bed42fb3193f98e0e3f04602.html b/tests/snapshots/external/43d819f94dc7cafe9ed60ce604bab9a938f42a115dc534cb72d12e15e998e96d.html
similarity index 98%
rename from tests/snapshots/external/ae74b5980f9b6996ed6e112d53168fde16c32d92bed42fb3193f98e0e3f04602.html
rename to tests/snapshots/external/43d819f94dc7cafe9ed60ce604bab9a938f42a115dc534cb72d12e15e998e96d.html
index 34123ecf..ddce47f6 100644
--- a/tests/snapshots/external/ae74b5980f9b6996ed6e112d53168fde16c32d92bed42fb3193f98e0e3f04602.html
+++ b/tests/snapshots/external/43d819f94dc7cafe9ed60ce604bab9a938f42a115dc534cb72d12e15e998e96d.html
@@ -266,7 +266,7 @@ <h2 class="doc doc-heading" id="members_package.Subclass">
      <p class="doc doc-class-bases">
       Bases:
       <code>
-       <autoref hover="" identifier="members_package.Class" optional="">
+       <autoref backlink-anchor="members_package.Subclass" backlink-type="subclassed-by" hover="" identifier="members_package.Class" optional="">
         Class
        </autoref>
       </code>
diff --git a/tests/snapshots/external/e8be7a9b1410e40dac79fe0ee29d3036e707a177b2ba2bdad25a6998bec570b7.html b/tests/snapshots/external/722165bce3ada19df43b169ea982ab4908d94cd1bf19b777e1e6bc22e8aa02a5.html
similarity index 98%
rename from tests/snapshots/external/e8be7a9b1410e40dac79fe0ee29d3036e707a177b2ba2bdad25a6998bec570b7.html
rename to tests/snapshots/external/722165bce3ada19df43b169ea982ab4908d94cd1bf19b777e1e6bc22e8aa02a5.html
index 3dbd9879..7c65c72b 100644
--- a/tests/snapshots/external/e8be7a9b1410e40dac79fe0ee29d3036e707a177b2ba2bdad25a6998bec570b7.html
+++ b/tests/snapshots/external/722165bce3ada19df43b169ea982ab4908d94cd1bf19b777e1e6bc22e8aa02a5.html
@@ -264,7 +264,7 @@ <h2 class="doc doc-heading" id="members_package.Subclass">
      <p class="doc doc-class-bases">
       Bases:
       <code>
-       <autoref hover="" identifier="members_package.Class" optional="">
+       <autoref backlink-anchor="members_package.Subclass" backlink-type="subclassed-by" hover="" identifier="members_package.Class" optional="">
         Class
        </autoref>
       </code>
diff --git a/tests/snapshots/external/7d5fe66539191786245991395e77d8ba0bbb22330cb08eaec2e84159bde4159b.html b/tests/snapshots/external/75b69b702f3b5fa3bc0d30091297b0a09a8915eb7f0e1f7be1ce99f5d59d9514.html
similarity index 98%
rename from tests/snapshots/external/7d5fe66539191786245991395e77d8ba0bbb22330cb08eaec2e84159bde4159b.html
rename to tests/snapshots/external/75b69b702f3b5fa3bc0d30091297b0a09a8915eb7f0e1f7be1ce99f5d59d9514.html
index 23e38eeb..fa970eca 100644
--- a/tests/snapshots/external/7d5fe66539191786245991395e77d8ba0bbb22330cb08eaec2e84159bde4159b.html
+++ b/tests/snapshots/external/75b69b702f3b5fa3bc0d30091297b0a09a8915eb7f0e1f7be1ce99f5d59d9514.html
@@ -266,7 +266,7 @@ <h2 class="doc doc-heading" id="members_package.Subclass">
      <p class="doc doc-class-bases">
       Bases:
       <code>
-       <autoref hover="" identifier="members_package.Class" optional="">
+       <autoref backlink-anchor="members_package.Subclass" backlink-type="subclassed-by" hover="" identifier="members_package.Class" optional="">
         Class
        </autoref>
       </code>
diff --git a/tests/snapshots/external/b4b490164ab1a724cac7aba25bbc69a33e7dd44500e9337718cd96da1bb56325.html b/tests/snapshots/external/84193b3c9f5d84fef33daa61fb61aa9a3e66171d312de8d7f836c69f0bc069b0.html
similarity index 97%
rename from tests/snapshots/external/b4b490164ab1a724cac7aba25bbc69a33e7dd44500e9337718cd96da1bb56325.html
rename to tests/snapshots/external/84193b3c9f5d84fef33daa61fb61aa9a3e66171d312de8d7f836c69f0bc069b0.html
index 9f5cbef9..07120341 100644
--- a/tests/snapshots/external/b4b490164ab1a724cac7aba25bbc69a33e7dd44500e9337718cd96da1bb56325.html
+++ b/tests/snapshots/external/84193b3c9f5d84fef33daa61fb61aa9a3e66171d312de8d7f836c69f0bc069b0.html
@@ -266,7 +266,7 @@ <h2 class="doc doc-heading" id="members_package.Subclass">
      <p class="doc doc-class-bases">
       Bases:
       <code>
-       <autoref hover="" identifier="members_package.Class" optional="">
+       <autoref backlink-anchor="members_package.Subclass" backlink-type="subclassed-by" hover="" identifier="members_package.Class" optional="">
         Class
        </autoref>
       </code>
diff --git a/tests/snapshots/external/ba51e100acd4f6ad91f1ef484aa5f1bd537e661588b1742d93d0a6543cc3592c.html b/tests/snapshots/external/8733f7fb7b6d28b15bbe736f29c7fd030467c0ccfa2cbc6a68616e06c6dc6a9b.html
similarity index 98%
rename from tests/snapshots/external/ba51e100acd4f6ad91f1ef484aa5f1bd537e661588b1742d93d0a6543cc3592c.html
rename to tests/snapshots/external/8733f7fb7b6d28b15bbe736f29c7fd030467c0ccfa2cbc6a68616e06c6dc6a9b.html
index b18eb50e..cb43eee6 100644
--- a/tests/snapshots/external/ba51e100acd4f6ad91f1ef484aa5f1bd537e661588b1742d93d0a6543cc3592c.html
+++ b/tests/snapshots/external/8733f7fb7b6d28b15bbe736f29c7fd030467c0ccfa2cbc6a68616e06c6dc6a9b.html
@@ -235,7 +235,7 @@ <h2 class="doc doc-heading" id="members_package.Subclass">
      <p class="doc doc-class-bases">
       Bases:
       <code>
-       <autoref hover="" identifier="members_package.Class" optional="">
+       <autoref backlink-anchor="members_package.Subclass" backlink-type="subclassed-by" hover="" identifier="members_package.Class" optional="">
         Class
        </autoref>
       </code>
diff --git a/tests/snapshots/external/0c2924ff976fa0e32ba66558a4f9e1eff4cd66196506a37977cdb33325a50718.html b/tests/snapshots/external/9720526cf5e4c44f27695c59764bb1e05e428834744442f43527ebf2b8acfb35.html
similarity index 98%
rename from tests/snapshots/external/0c2924ff976fa0e32ba66558a4f9e1eff4cd66196506a37977cdb33325a50718.html
rename to tests/snapshots/external/9720526cf5e4c44f27695c59764bb1e05e428834744442f43527ebf2b8acfb35.html
index 5fb3da58..6d460dd2 100644
--- a/tests/snapshots/external/0c2924ff976fa0e32ba66558a4f9e1eff4cd66196506a37977cdb33325a50718.html
+++ b/tests/snapshots/external/9720526cf5e4c44f27695c59764bb1e05e428834744442f43527ebf2b8acfb35.html
@@ -268,7 +268,7 @@ <h2 class="doc doc-heading" id="members_package.Subclass">
      <p class="doc doc-class-bases">
       Bases:
       <code>
-       <autoref hover="" identifier="members_package.Class" optional="">
+       <autoref backlink-anchor="members_package.Subclass" backlink-type="subclassed-by" hover="" identifier="members_package.Class" optional="">
         Class
        </autoref>
       </code>
diff --git a/tests/snapshots/external/0b1372d7f7c057905f665ad506f3dd3bee62fb9b1c8b2a39991550e7845c2b02.html b/tests/snapshots/external/c0f102dbd7d4de76de40c06a8205a642465f5fde9a37b4b969aa01f161ef25a4.html
similarity index 98%
rename from tests/snapshots/external/0b1372d7f7c057905f665ad506f3dd3bee62fb9b1c8b2a39991550e7845c2b02.html
rename to tests/snapshots/external/c0f102dbd7d4de76de40c06a8205a642465f5fde9a37b4b969aa01f161ef25a4.html
index 89a3ea1e..e9f375b2 100644
--- a/tests/snapshots/external/0b1372d7f7c057905f665ad506f3dd3bee62fb9b1c8b2a39991550e7845c2b02.html
+++ b/tests/snapshots/external/c0f102dbd7d4de76de40c06a8205a642465f5fde9a37b4b969aa01f161ef25a4.html
@@ -264,7 +264,7 @@ <h2 class="doc doc-heading" id="members_package.Subclass">
      <p class="doc doc-class-bases">
       Bases:
       <code>
-       <autoref hover="" identifier="members_package.Class" optional="">
+       <autoref backlink-anchor="members_package.Subclass" backlink-type="subclassed-by" hover="" identifier="members_package.Class" optional="">
         Class
        </autoref>
       </code>
diff --git a/tests/snapshots/external/052e71e7e9d5bec710fb2d36b009122c48eca0a19d0611df530e607f5bacdf6f.html b/tests/snapshots/external/cd3e458517147c43c360525140aa1b9a81682634aaf2674ffd4cceb7fc44aba6.html
similarity index 94%
rename from tests/snapshots/external/052e71e7e9d5bec710fb2d36b009122c48eca0a19d0611df530e607f5bacdf6f.html
rename to tests/snapshots/external/cd3e458517147c43c360525140aa1b9a81682634aaf2674ffd4cceb7fc44aba6.html
index 6866b45f..e196b599 100644
--- a/tests/snapshots/external/052e71e7e9d5bec710fb2d36b009122c48eca0a19d0611df530e607f5bacdf6f.html
+++ b/tests/snapshots/external/cd3e458517147c43c360525140aa1b9a81682634aaf2674ffd4cceb7fc44aba6.html
@@ -78,7 +78,7 @@ <h2 class="doc doc-heading" id="members_package.Subclass">
      <p class="doc doc-class-bases">
       Bases:
       <code>
-       <autoref hover="" identifier="members_package.Class" optional="">
+       <autoref backlink-anchor="members_package.Subclass" backlink-type="subclassed-by" hover="" identifier="members_package.Class" optional="">
         Class
        </autoref>
       </code>
diff --git a/tests/snapshots/external/d540895f6bf91c8c8e4abc02f40529a61c6cec71b18da2e4f02206ec18b901ef.html b/tests/snapshots/external/cd51e40cc0ddf1d42b7c6bf7560ead2501370ee9d67499b74afc83e258caff8e.html
similarity index 98%
rename from tests/snapshots/external/d540895f6bf91c8c8e4abc02f40529a61c6cec71b18da2e4f02206ec18b901ef.html
rename to tests/snapshots/external/cd51e40cc0ddf1d42b7c6bf7560ead2501370ee9d67499b74afc83e258caff8e.html
index 2ad1c277..a52964c3 100644
--- a/tests/snapshots/external/d540895f6bf91c8c8e4abc02f40529a61c6cec71b18da2e4f02206ec18b901ef.html
+++ b/tests/snapshots/external/cd51e40cc0ddf1d42b7c6bf7560ead2501370ee9d67499b74afc83e258caff8e.html
@@ -266,7 +266,7 @@ <h2 class="doc doc-heading" id="members_package.Subclass">
      <p class="doc doc-class-bases">
       Bases:
       <code>
-       <autoref hover="" identifier="members_package.Class" optional="">
+       <autoref backlink-anchor="members_package.Subclass" backlink-type="subclassed-by" hover="" identifier="members_package.Class" optional="">
         Class
        </autoref>
       </code>
diff --git a/tests/snapshots/external/cdc8126d78b690d11c09e3128df0f8d65379375a6bd390da30f5676bf2289cf2.html b/tests/snapshots/external/d556527026068280df9b77db277472320842cb1ae6099ac3cf558031afda6d2e.html
similarity index 97%
rename from tests/snapshots/external/cdc8126d78b690d11c09e3128df0f8d65379375a6bd390da30f5676bf2289cf2.html
rename to tests/snapshots/external/d556527026068280df9b77db277472320842cb1ae6099ac3cf558031afda6d2e.html
index 158c1ca5..5a87832a 100644
--- a/tests/snapshots/external/cdc8126d78b690d11c09e3128df0f8d65379375a6bd390da30f5676bf2289cf2.html
+++ b/tests/snapshots/external/d556527026068280df9b77db277472320842cb1ae6099ac3cf558031afda6d2e.html
@@ -235,7 +235,7 @@ <h2 class="doc doc-heading" id="members_package.Subclass">
      <p class="doc doc-class-bases">
       Bases:
       <code>
-       <autoref hover="" identifier="members_package.Class" optional="">
+       <autoref backlink-anchor="members_package.Subclass" backlink-type="subclassed-by" hover="" identifier="members_package.Class" optional="">
         Class
        </autoref>
       </code>
diff --git a/tests/snapshots/external/347d4ffe2cb3f2ca3f0d1f3f09cffa96645eb2af29983e75d807fccff96d8f75.html b/tests/snapshots/external/dcf34c2f72697f7a4700e4a1f048d601f374eab35eea68c9beb8bab8fc269aed.html
similarity index 97%
rename from tests/snapshots/external/347d4ffe2cb3f2ca3f0d1f3f09cffa96645eb2af29983e75d807fccff96d8f75.html
rename to tests/snapshots/external/dcf34c2f72697f7a4700e4a1f048d601f374eab35eea68c9beb8bab8fc269aed.html
index 9cd4b2fe..2d79edd5 100644
--- a/tests/snapshots/external/347d4ffe2cb3f2ca3f0d1f3f09cffa96645eb2af29983e75d807fccff96d8f75.html
+++ b/tests/snapshots/external/dcf34c2f72697f7a4700e4a1f048d601f374eab35eea68c9beb8bab8fc269aed.html
@@ -264,7 +264,7 @@ <h2 class="doc doc-heading" id="members_package.Subclass">
      <p class="doc doc-class-bases">
       Bases:
       <code>
-       <autoref hover="" identifier="members_package.Class" optional="">
+       <autoref backlink-anchor="members_package.Subclass" backlink-type="subclassed-by" hover="" identifier="members_package.Class" optional="">
         Class
        </autoref>
       </code>
diff --git a/tests/snapshots/external/f848d4a9e516beeb1b1719630e34aa243a093ccd362a63e33dbd6202ae8ab75d.html b/tests/snapshots/external/e5dc372374af6f90a5d456d8683aacdf81104137ce91bd6d4121827f8d989d96.html
similarity index 98%
rename from tests/snapshots/external/f848d4a9e516beeb1b1719630e34aa243a093ccd362a63e33dbd6202ae8ab75d.html
rename to tests/snapshots/external/e5dc372374af6f90a5d456d8683aacdf81104137ce91bd6d4121827f8d989d96.html
index 19c29b39..d9ae307d 100644
--- a/tests/snapshots/external/f848d4a9e516beeb1b1719630e34aa243a093ccd362a63e33dbd6202ae8ab75d.html
+++ b/tests/snapshots/external/e5dc372374af6f90a5d456d8683aacdf81104137ce91bd6d4121827f8d989d96.html
@@ -266,7 +266,7 @@ <h2 class="doc doc-heading" id="members_package.Subclass">
      <p class="doc doc-class-bases">
       Bases:
       <code>
-       <autoref hover="" identifier="members_package.Class" optional="">
+       <autoref backlink-anchor="members_package.Subclass" backlink-type="subclassed-by" hover="" identifier="members_package.Class" optional="">
         Class
        </autoref>
       </code>
diff --git a/tests/snapshots/external/a1167b14f5a71a283817bf5866d2bb0bd08bf23dc054c6f7938a04f42feab99d.html b/tests/snapshots/external/e8608b0de174402ca18f88ed58849312158c22f5bfdc845d2da02055fe14853c.html
similarity index 95%
rename from tests/snapshots/external/a1167b14f5a71a283817bf5866d2bb0bd08bf23dc054c6f7938a04f42feab99d.html
rename to tests/snapshots/external/e8608b0de174402ca18f88ed58849312158c22f5bfdc845d2da02055fe14853c.html
index bb9001d8..795378be 100644
--- a/tests/snapshots/external/a1167b14f5a71a283817bf5866d2bb0bd08bf23dc054c6f7938a04f42feab99d.html
+++ b/tests/snapshots/external/e8608b0de174402ca18f88ed58849312158c22f5bfdc845d2da02055fe14853c.html
@@ -80,7 +80,7 @@ <h2 class="doc doc-heading" id="members_package.Subclass">
      <p class="doc doc-class-bases">
       Bases:
       <code>
-       <autoref hover="" identifier="members_package.Class" optional="">
+       <autoref backlink-anchor="members_package.Subclass" backlink-type="subclassed-by" hover="" identifier="members_package.Class" optional="">
         Class
        </autoref>
       </code>
diff --git a/tests/snapshots/external/cc19537fdba4a26b10c60d5586b0eb7ef0264a783a3c47d1114d21fa8cfa3947.html b/tests/snapshots/external/ea914f1afa9de4b5eddc9792c2b6a5d8de367274278976092bb824e99e523ca5.html
similarity index 98%
rename from tests/snapshots/external/cc19537fdba4a26b10c60d5586b0eb7ef0264a783a3c47d1114d21fa8cfa3947.html
rename to tests/snapshots/external/ea914f1afa9de4b5eddc9792c2b6a5d8de367274278976092bb824e99e523ca5.html
index f93ae024..68c7d720 100644
--- a/tests/snapshots/external/cc19537fdba4a26b10c60d5586b0eb7ef0264a783a3c47d1114d21fa8cfa3947.html
+++ b/tests/snapshots/external/ea914f1afa9de4b5eddc9792c2b6a5d8de367274278976092bb824e99e523ca5.html
@@ -264,7 +264,7 @@ <h2 class="doc doc-heading" id="members_package.Subclass">
      <p class="doc doc-class-bases">
       Bases:
       <code>
-       <autoref hover="" identifier="members_package.Class" optional="">
+       <autoref backlink-anchor="members_package.Subclass" backlink-type="subclassed-by" hover="" identifier="members_package.Class" optional="">
         Class
        </autoref>
       </code>
diff --git a/tests/snapshots/external/a2c5be9bd5d1f0db3ff64b44353c1760f5eb69d7db6401da2f28518d0e8065c4.html b/tests/snapshots/external/eac5bee59a9ee0a64602fd6bb8f4f54cb5f3543aa321169921326288a61f556c.html
similarity index 97%
rename from tests/snapshots/external/a2c5be9bd5d1f0db3ff64b44353c1760f5eb69d7db6401da2f28518d0e8065c4.html
rename to tests/snapshots/external/eac5bee59a9ee0a64602fd6bb8f4f54cb5f3543aa321169921326288a61f556c.html
index 4738a584..7c90168c 100644
--- a/tests/snapshots/external/a2c5be9bd5d1f0db3ff64b44353c1760f5eb69d7db6401da2f28518d0e8065c4.html
+++ b/tests/snapshots/external/eac5bee59a9ee0a64602fd6bb8f4f54cb5f3543aa321169921326288a61f556c.html
@@ -264,7 +264,7 @@ <h2 class="doc doc-heading" id="members_package.Subclass">
      <p class="doc doc-class-bases">
       Bases:
       <code>
-       <autoref hover="" identifier="members_package.Class" optional="">
+       <autoref backlink-anchor="members_package.Subclass" backlink-type="subclassed-by" hover="" identifier="members_package.Class" optional="">
         Class
        </autoref>
       </code>
diff --git a/tests/snapshots/external/83119803338105f101311992d31947e4fcaf2c5a6c68cad6355d8611c1cc2e3f.html b/tests/snapshots/external/f4150843096a1371b097478f8d67062e3d45ab9f6a8f97e79ae62d32abc5e22a.html
similarity index 97%
rename from tests/snapshots/external/83119803338105f101311992d31947e4fcaf2c5a6c68cad6355d8611c1cc2e3f.html
rename to tests/snapshots/external/f4150843096a1371b097478f8d67062e3d45ab9f6a8f97e79ae62d32abc5e22a.html
index c9c637e4..cce2be49 100644
--- a/tests/snapshots/external/83119803338105f101311992d31947e4fcaf2c5a6c68cad6355d8611c1cc2e3f.html
+++ b/tests/snapshots/external/f4150843096a1371b097478f8d67062e3d45ab9f6a8f97e79ae62d32abc5e22a.html
@@ -264,7 +264,7 @@ <h2 class="doc doc-heading" id="members_package.Subclass">
      <p class="doc doc-class-bases">
       Bases:
       <code>
-       <autoref hover="" identifier="members_package.Class" optional="">
+       <autoref backlink-anchor="members_package.Subclass" backlink-type="subclassed-by" hover="" identifier="members_package.Class" optional="">
         Class
        </autoref>
       </code>
diff --git a/tests/snapshots/external/59a9e1ffb2f0807b594a933444c78753a06f359527ea4adac85c72a7812b21d3.html b/tests/snapshots/external/fca72854c849dc68c3ad072a41c32f926f95c6e88775f3e2eeaa63138d99837c.html
similarity index 97%
rename from tests/snapshots/external/59a9e1ffb2f0807b594a933444c78753a06f359527ea4adac85c72a7812b21d3.html
rename to tests/snapshots/external/fca72854c849dc68c3ad072a41c32f926f95c6e88775f3e2eeaa63138d99837c.html
index ad60041c..d6c51063 100644
--- a/tests/snapshots/external/59a9e1ffb2f0807b594a933444c78753a06f359527ea4adac85c72a7812b21d3.html
+++ b/tests/snapshots/external/fca72854c849dc68c3ad072a41c32f926f95c6e88775f3e2eeaa63138d99837c.html
@@ -264,7 +264,7 @@ <h2 class="doc doc-heading" id="members_package.Subclass">
      <p class="doc doc-class-bases">
       Bases:
       <code>
-       <autoref hover="" identifier="members_package.Class" optional="">
+       <autoref backlink-anchor="members_package.Subclass" backlink-type="subclassed-by" hover="" identifier="members_package.Class" optional="">
         Class
        </autoref>
       </code>
diff --git a/tests/snapshots/external/88855b0284174733b57edd2043e0e8cd6a1a0223055f08b80031452eb05d9484.html b/tests/snapshots/external/fd291f98ca28b8f15b5a8ed6a2608bacf5b5322599bcbf0544ef8e9c0a27870b.html
similarity index 97%
rename from tests/snapshots/external/88855b0284174733b57edd2043e0e8cd6a1a0223055f08b80031452eb05d9484.html
rename to tests/snapshots/external/fd291f98ca28b8f15b5a8ed6a2608bacf5b5322599bcbf0544ef8e9c0a27870b.html
index 540a2f6a..91614cf0 100644
--- a/tests/snapshots/external/88855b0284174733b57edd2043e0e8cd6a1a0223055f08b80031452eb05d9484.html
+++ b/tests/snapshots/external/fd291f98ca28b8f15b5a8ed6a2608bacf5b5322599bcbf0544ef8e9c0a27870b.html
@@ -264,7 +264,7 @@ <h2 class="doc doc-heading" id="members_package.Subclass">
      <p class="doc doc-class-bases">
       Bases:
       <code>
-       <autoref hover="" identifier="members_package.Class" optional="">
+       <autoref backlink-anchor="members_package.Subclass" backlink-type="subclassed-by" hover="" identifier="members_package.Class" optional="">
         Class
        </autoref>
       </code>
diff --git a/tests/snapshots/external/3d072a22b9513eecb51c6a5f39b978c1c1d3ef56a572031a307fe1cad1f17eff.html b/tests/snapshots/external/fe1cd23642d405d0b2a4d29ec4a2125f55b54f90c2440ee2d856540415e77745.html
similarity index 97%
rename from tests/snapshots/external/3d072a22b9513eecb51c6a5f39b978c1c1d3ef56a572031a307fe1cad1f17eff.html
rename to tests/snapshots/external/fe1cd23642d405d0b2a4d29ec4a2125f55b54f90c2440ee2d856540415e77745.html
index f950f69b..dce4e148 100644
--- a/tests/snapshots/external/3d072a22b9513eecb51c6a5f39b978c1c1d3ef56a572031a307fe1cad1f17eff.html
+++ b/tests/snapshots/external/fe1cd23642d405d0b2a4d29ec4a2125f55b54f90c2440ee2d856540415e77745.html
@@ -237,7 +237,7 @@ <h2 class="doc doc-heading" id="members_package.Subclass">
      <p class="doc doc-class-bases">
       Bases:
       <code>
-       <autoref hover="" identifier="members_package.Class" optional="">
+       <autoref backlink-anchor="members_package.Subclass" backlink-type="subclassed-by" hover="" identifier="members_package.Class" optional="">
         Class
        </autoref>
       </code>
diff --git a/tests/snapshots/external/0fac4f5e7f455b351c60268567bfcbd0259b652d0534259efea7815aa15b1122.html b/tests/snapshots/external/fe25ab7600392b4fd3a1438fb54337041719faac884123527bab9a92e3a51be5.html
similarity index 97%
rename from tests/snapshots/external/0fac4f5e7f455b351c60268567bfcbd0259b652d0534259efea7815aa15b1122.html
rename to tests/snapshots/external/fe25ab7600392b4fd3a1438fb54337041719faac884123527bab9a92e3a51be5.html
index 47cfb56f..40ebfa36 100644
--- a/tests/snapshots/external/0fac4f5e7f455b351c60268567bfcbd0259b652d0534259efea7815aa15b1122.html
+++ b/tests/snapshots/external/fe25ab7600392b4fd3a1438fb54337041719faac884123527bab9a92e3a51be5.html
@@ -266,7 +266,7 @@ <h2 class="doc doc-heading" id="members_package.Subclass">
      <p class="doc doc-class-bases">
       Bases:
       <code>
-       <autoref hover="" identifier="members_package.Class" optional="">
+       <autoref backlink-anchor="members_package.Subclass" backlink-type="subclassed-by" hover="" identifier="members_package.Class" optional="">
         Class
        </autoref>
       </code>
diff --git a/tests/test_handler.py b/tests/test_handler.py
index 4d8b4f3d..1a907469 100644
--- a/tests/test_handler.py
+++ b/tests/test_handler.py
@@ -263,7 +263,7 @@ def test_deduplicate_summary_sections(handler: PythonHandler, section: str, code
     """Assert summary sections are deduplicated."""
     summary_section = section.lower()
     summary_section = "functions" if summary_section == "methods" else summary_section
-    with temporary_visited_module(code, docstring_parser="google") as module:  # type: ignore[arg-type]
+    with temporary_visited_module(code, docstring_parser="google") as module:
         if summary_section == "modules":
             module.set_member("a", Module("A", docstring=Docstring("A.")))
             module.set_member("b", Module("B", docstring=Docstring("B.")))