class YARD::RegistryResolver

def lookup_path_inherited(namespace, path, type)

Performs a lookup through the inheritance chain on a path with a type hint.
def lookup_path_inherited(namespace, path, type)
  resolved = nil
  last_obj = namespace
  scopes = []
  last_sep = nil
  pos = 0
  if path =~ starts_with_separator_match
    last_sep = $1
    path = $'
  end
  path.scan(split_on_separators_match).each do |part, sep|
    cur_obj = nil
    pos += part.length
    pos += sep.length
    parsed_end = pos == path.length
    if !last_obj || (!parsed_end && !last_obj.is_a?(CodeObjects::NamespaceObject))
      break # can't continue
    end
    collect_namespaces(last_obj).each do |ns|
      next if ns.is_a?(CodeObjects::Proxy)
      found = nil
      search_seps = []
      scopes.each do |scope|
        search_seps += separators_for_type(scope)
      end
      if search_seps.empty?
        search_seps =
          if ns.type == :root
            [""]
          elsif last_sep.nil?
            separators
          else
            [@default_sep]
          end
      end
      ([last_sep] | search_seps).compact.each do |search_sep|
        found = @registry.at(ns.path + search_sep.to_s + part)
        break if found
      end
      break cur_obj = found if found
    end
    last_sep = sep
    scopes = types_for_separator(sep) || []
    last_obj = cur_obj
    resolved = cur_obj if parsed_end && cur_obj && (type.nil? || type == cur_obj.type)
  end
  resolved
end