mirror of
https://github.com/icsharpcode/ILSpy.git
synced 2026-10-12 02:15:58 +00:00
The pattern matcher walked collections through INode.Role/FirstChild/ NextSibling, skipping siblings of a different role. Now that each AstNodeCollection<T> is already the per-role child list, the engine matches two collections by list index, and INode sheds Role/FirstChild/NextSibling entirely. A collection exposes its IReadOnlyList<INode> view through a cached adapter rather than implementing the interface directly, so a typed collection does not become ambiguous for LINQ. Characterization tests pin the matcher's behavior first. Assisted-by: Claude:claude-opus-4-8:Claude Code