public void RecordTreeChange(BehaviourTree tree, string name)
            {
                Dictionary <ParentNode, List <Node> > nodeChildren = new Dictionary <ParentNode, List <Node> >();

                foreach (var node in tree.Nodes)
                {
                    if (node is ParentNode parent)
                    {
                        nodeChildren.Add(parent, new List <Node>(parent.GetChildren()));
                    }
                }
                undoRecords.Push(new Record(RecordType.TreeChange, name)
                {
                    tree = tree, nodes = new List <Node>(tree.Nodes), nodeChildren = nodeChildren
                });
                undoRecords.Peek().evaluatedConditionals.UnionWith(tree.GetEvaluatedComposites());
                onRecordsChanged?.Invoke();
            }