docs: def del_node(self, char, node):
          """Remove a node from a character."""
          del self._real.character[char].node[node]
          for cache in (
                  self._char_nodes_rulebooks_cache,
                  self._node_stat_cache,
                  self._node_successors_cache
          ):
              try:
                  del cache[char][node]
              except KeyError:
                  pass
          if char in self._char_nodes_cache and node in self._char_nodes_cache[char]:
              self._char_nodes_cache[char] = self._char_nodes_cache[char] - frozenset([node])
          if char in self._portal_stat_cache:
              portal_stat_cache_char = self._portal_stat_cache[char]
              if node in portal_stat_cache_char:
                  del portal_stat_cache_char[node]
              for charo in portal_stat_cache_char.values():
                  if node in charo:
                      del charo[node]
          if char in self._char_portals_rulebooks_cache:
              portal_rulebook_cache_char = self._char_portals_rulebooks_cache[char]
              if node in portal_rulebook_cache_char:
                  del portal_rulebook_cache_char[node]
              for porto in portal_rulebook_cache_char.values():
                  if node in porto:
                      del porto[node]