private unsafe void InitialiseMap() { if (_children != null) { return; } long end = _nodeData->ChildCount + _nodeData->FirstChildID; Dictionary <string, NXNode> children = new Dictionary <string, NXNode>(_nodeData->ChildCount); for (uint i = _nodeData->FirstChildID; i < end; ++i) { AddChild(children, _file.GetNode(i)); } Interlocked.CompareExchange(ref _children, children, null); }