nodes: 0, module; 1, function_definition; 2, function_name:_build_module_db; 3, parameters; 4, block; 5, identifier:self; 6, expression_statement; 7, expression_statement; 8, for_statement; 9, for_statement; 10, comment:"""
          Build database of module callables sorted by line number.
  
          The database is a dictionary whose keys are module file names and
          whose values are lists of dictionaries containing name and line
          number of callables in that module
          """; 11, assignment; 12, pattern_list; 13, call; 14, block; 15, identifier:fname; 16, call; 17, block; 18, identifier:tdict; 19, call; 20, identifier:callable_name; 21, identifier:callable_dict; 22, attribute; 23, argument_list; 24, expression_statement; 25, expression_statement; 26, expression_statement; 27, attribute; 28, argument_list; 29, expression_statement; 30, attribute; 31, argument_list; 32, attribute; 33, identifier:items; 34, assignment; 35, assignment; 36, call; 37, identifier:tdict; 38, identifier:keys; 39, assignment; 40, identifier:collections; 41, identifier:defaultdict; 42, lambda; 43, attribute; 44, identifier:callables_db; 45, pattern_list; 46, subscript; 47, identifier:cname; 48, parenthesized_expression; 49, attribute; 50, argument_list; 51, subscript; 52, call; 53, list; 54, identifier:self; 55, identifier:_exh_obj; 56, identifier:fname; 57, identifier:line_no; 58, identifier:callable_dict; 59, string:"code_id"; 60, conditional_expression:"{cls_name}.__init__".format(cls_name=callable_name)
                  if callable_dict["type"] == "class"
                  else callable_name; 61, subscript; 62, identifier:append; 63, dictionary; 64, attribute; 65, identifier:fname; 66, identifier:sorted; 67, argument_list; 68, call; 69, comparison_operator:callable_dict["type"] == "class"; 70, identifier:callable_name; 71, identifier:tdict; 72, identifier:fname; 73, pair; 74, pair; 75, identifier:self; 76, identifier:_module_obj_db; 77, subscript; 78, keyword_argument; 79, attribute; 80, argument_list; 81, subscript; 82, string:"class"; 83, string:"name"; 84, identifier:cname; 85, string:"line"; 86, identifier:line_no; 87, identifier:tdict; 88, identifier:fname; 89, identifier:key; 90, lambda; 91, string:"{cls_name}.__init__"; 92, identifier:format; 93, keyword_argument; 94, identifier:callable_dict; 95, string:"type"; 96, lambda_parameters; 97, subscript; 98, identifier:cls_name; 99, identifier:callable_name; 100, identifier:idict; 101, identifier:idict; 102, string:"line"
code: def _build_module_db(self):
          """
          Build database of module callables sorted by line number.
  
          The database is a dictionary whose keys are module file names and
          whose values are lists of dictionaries containing name and line
          number of callables in that module
          """
          tdict = collections.defaultdict(lambda: [])
          for callable_name, callable_dict in self._exh_obj.callables_db.items():
              fname, line_no = callable_dict["code_id"]
              cname = (
                  "{cls_name}.__init__".format(cls_name=callable_name)
                  if callable_dict["type"] == "class"
                  else callable_name
              )
              tdict[fname].append({"name": cname, "line": line_no})
          for fname in tdict.keys():
              self._module_obj_db[fname] = sorted(
                  tdict[fname], key=lambda idict: idict["line"]
              )