Extract the receiver variable from immediately before ->word or ?->word
at the cursor’s exact column position. Uses the column rather than
str::find() so multiple method calls on the same line are handled
correctly.
Indexed variant: uses pre-computed SymbolMaps for the cross-file
declaration lookup (path 4/5), eliminating repeated AST walks on stable
files. find_class_doc gives mir-member hover and static-prop hover (path
2/3) the same O(1) workspace-index fast path, falling back to a linear
other_docs scan only when it misses (index not ready, unsaved file, …).
Named-arg hover still walks other_docs directly — it has no single
resolved class to key a fast lookup on.
Like resolve_use_alias, but also returns the full FQN the alias
resolves to, so callers can disambiguate between same-named classes in
different namespaces (e.g. many vendored Factory classes all locally
aliased to FactoryContract) instead of matching on the short name alone.