27 references to MetadataNode
Microsoft.CodeAnalysis.Workspaces (27)
FindSymbols\SymbolTree\SymbolTreeInfo_Metadata.cs (27)
256private readonly OrderPreservingMultiDictionary<MetadataNode, MetadataNode> _parentToChildren = OrderPreservingMultiDictionary<MetadataNode, MetadataNode>.GetInstance();
257private readonly MetadataNode _rootNode = MetadataNode.Allocate(name: "");
269private readonly MultiDictionary<MetadataNode, (ParameterTypeInfo typeInfo, bool isModernExtension)> _extensionMemberToParameterTypeInfo = [];
336foreach (var child in children)
337MetadataNode.Free(child);
340MetadataNode.Free(_rootNode);
365MetadataNode parentNode,
374var childNode = MetadataNode.Allocate(nodeName);
880var currentNode = _rootNode;
884var childNode = GetOrCreateChildNode(currentNode, simpleName);
889private readonly MetadataNode GetOrCreateChildNode(
890MetadataNode currentNode, string simpleName)
892if (_parentToChildren.TryGetValue(currentNode, static (childNode, simpleName) => childNode.Name == simpleName, simpleName, out var childNode))
901var newChildNode = MetadataNode.Allocate(simpleName);
917MetadataNode parentNode,
921foreach (var child in _parentToChildren[parentNode])
977private static readonly ObjectPool<MetadataNode> s_pool = SharedPools.Default<MetadataNode>();
985public static MetadataNode Allocate(string name)
987var node = s_pool.Allocate();
993public static void Free(MetadataNode node)