docs: def resolve_symbols(self, tree, database, link_resolver):
          """
          When this method is called, the page's symbol names are queried
          from `database`, and added to lists of actual symbols, sorted
          by symbol class.
          """
          self.typed_symbols = self.__get_empty_typed_symbols()
          all_syms = OrderedSet()
          for sym_name in self.symbol_names:
              sym = database.get_symbol(sym_name)
              self.__query_extra_symbols(
                  sym, all_syms, tree, link_resolver, database)
  
          if tree.project.is_toplevel:
              page_path = self.link.ref
          else:
              page_path = self.project_name + '/' + self.link.ref
  
          if self.meta.get("auto-sort", True):
              all_syms = sorted(all_syms, key=lambda x: x.unique_name)
          for sym in all_syms:
              sym.update_children_comments()
              self.__resolve_symbol(sym, link_resolver, page_path)
              self.symbol_names.add(sym.unique_name)
  
          # Always put symbols with no parent at the end
          no_parent_syms = self.by_parent_symbols.pop(None, None)
          if no_parent_syms:
              self.by_parent_symbols[None] = no_parent_syms
  
          for sym_type in [ClassSymbol, AliasSymbol, InterfaceSymbol,
                           StructSymbol]:
              syms = self.typed_symbols[sym_type].symbols
  
              if not syms:
                  continue
  
              if self.title is None:
                  self.title = syms[0].display_name
              if self.comment is None:
                  self.comment = Comment(name=self.name)
                  self.comment.short_description = syms[
                      0].comment.short_description
                  self.comment.title = syms[0].comment.title
              break