def resolve_symbols(self, tree, database, link_resolver):
self.typed_symbols = self.__get_empty_typed_symbols()<EOL>all_syms = OrderedSet()<EOL>for sym_name in self.symbol_names:<EOL><INDENT>sym = database.get_symbol(sym_name)<EOL>self.__query_extra_symbols(<EOL>sym, all_syms, tree, link_resolver, database)<EOL><DEDENT>if tree.project.is_toplevel:<EOL><INDENT>page_path = self.link.ref<EOL><DEDENT>else:<EOL><INDENT>page_path = self.project_name + '<STR_LIT:/>' + self.link.ref<EOL><DEDENT>if self.meta.get("<STR_LIT>", True):<EOL><INDENT>all_syms = sorted(all_syms, key=lambda x: x.unique_name)<EOL><DEDENT>for sym in all_syms:<EOL><INDENT>sym.update_children_comments()<EOL>self.__resolve_symbol(sym, link_resolver, page_path)<EOL>self.symbol_names.add(sym.unique_name)<EOL><DEDENT>no_parent_syms = self.by_parent_symbols.pop(None, None)<EOL>if no_parent_syms:<EOL><INDENT>self.by_parent_symbols[None] = no_parent_syms<EOL><DEDENT>for sym_type in [ClassSymbol, AliasSymbol, InterfaceSymbol,<EOL>StructSymbol]:<EOL><INDENT>syms = self.typed_symbols[sym_type].symbols<EOL>if not syms:<EOL><INDENT>continue<EOL><DEDENT>if self.title is None:<EOL><INDENT>self.title = syms[<NUM_LIT:0>].display_name<EOL><DEDENT>if self.comment is None:<EOL><INDENT>self.comment = Comment(name=self.name)<EOL>self.comment.short_description = syms[<EOL><NUM_LIT:0>].comment.short_description<EOL>self.comment.title = syms[<NUM_LIT:0>].comment.title<EOL><DEDENT>break<EOL><DEDENT>
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.