docs: def find_obj(self, env, modname, classname, name, type_name, searchmode=0):
          """Find a Chapel object for "name", possibly with module or class/record
          name. Returns a list of (name, object entry) tuples.
  
          :arg int searchmode: If 1, search more specific names first. Otherwise,
              search built-ins first and then get more specific.
          """
          if name[-2:] == '()':
              name = name[:-2]
  
          if not name:
              return []
  
          objects = self.data['objects']
          matches = []
  
          newname = None
          if searchmode == 1:
              if type_name is None:
                  objtypes = list(self.object_types)
              else:
                  objtypes = self.objtypes_for_role(type_name)
              if objtypes is not None:
                  if modname and classname:
                      fullname = modname + '.' + classname + '.' + name
                      if (fullname in objects and
                              objects[fullname][1] in objtypes):
                          newname = fullname
                  if not newname:
                      if (modname and modname + '.' + name in objects and
                              objects[modname + '.' + name][1] in objtypes):
                          newname = modname + '.' + name
                      elif name in objects and objects[name][1] in objtypes:
                          newname = name
                      else:
                          # "Fuzzy" search mode.
                          searchname = '.' + name
                          matches = [(oname, objects[oname]) for oname in objects
                                     if oname.endswith(searchname) and
                                     objects[oname][1] in objtypes]
          else:
              # NOTE: Search for exact match, object type is not considered.
              if name in objects:
                  newname = name
              elif type_name == 'mod':
                  # Only exact matches allowed for modules.
                  return []
              elif classname and classname + '.' + name in objects:
                  newname = classname + '.' + name
              elif modname and modname + '.' + name in objects:
                  newname = modname + '.' + name
              elif (modname and classname and
                      modname + '.' + classname + '.' + name in objects):
                  newname = modname + '.' + classname + '.' + name
  
          if newname is not None:
              matches.append((newname, objects[newname]))
          return matches