public FNode(int InNameIndex, FNode InParent, FAllocationTag?InTag)
            {
                Parent = InParent;
                if (Parent != null)
                {
                    if (InTag.HasValue)
                    {
                        Parent.RegisterChildTag(InNameIndex, this);
                    }
                    else
                    {
                        Parent.RegisterChildNode(InNameIndex, this);
                    }
                }

                NameIndex = InNameIndex;
                Tag       = InTag;

                ChildNodes          = new List <FNode>();
                ChildNodesByNameMap = new Dictionary <int, FNode>();

                ChildTags          = new List <FNode>();
                ChildTagsByNameMap = new Dictionary <int, FNode>();
            }