Match native VBScript's pattern of probing top-level declared names against an `ISVISIBLE` named item's host `IDispatch` at parse time, and keep the probe IDispatch slot independent of the runtime cache. Why - **Wire-level compatibility.** Hosts that observe `GetIDsOfNames` calls see the same pattern they get on native. The probe result is discarded - it doesn't change shadowing - but the host gets notified of declared names. - **Correctness with rotating hosts.** Wine previously had a single `IDispatch` slot per named item; a Dim parse overwrote the runtime cache, misrouting subsequent qualified access. The patch keeps the probe slot (`dim_probe_disp`) separate. What's in it - Probe pass in `exec_global_code` for visible items, in native order: Subs/Functions -> Classes -> explicit Dims -> implicit declarations from bare top-level assignments. - Cross-parse deduplication: a name is probed at most once per named item across the script lifetime. - Two-slot independence; probe slot reused as runtime cache when no separate runtime fetch has happened yet. - Lazy runtime fetch via `ensure_named_item_disp`. Known divergence (follow-up) When an implicit-decl name is later read as RHS (`a = 1; b = a`), Wine still triggers one extra runtime `GetIDsOfNames` that native avoids. Native pre-creates implicit decls during parse; matching that needs compiler changes. Verified against native VBScript 5.812 with a raw-IDispatch probe harness. -- v31: vbscript: Probe top-level declared names against the host dispatch. vbscript/tests: Test probing of top-level declared names against the host dispatch. https://gitlab.winehq.org/wine/wine/-/merge_requests/10393