TreeGraphNode DeserializeNode(TreeNodeData data)
        {
            NodeInfo      info = serializedNameToInfo.TryGetValue(data.nodeTypeSerializableName) ?? throw new Exception($"Unexpected serialized name {data.nodeTypeSerializableName}");
            TreeGraphNode node = graphView.CreateNewNode(info, data.position, data.parameters);

            node.GUID = data.GUID;

            //Children
            TreeGraphNode child = null;

            for (int i = 0; i < data.children.Length; i++)
            {
                child = DeserializeNode(allData[data.children[i]]);
                graphView.AddElement(child.ParentPort.ConnectTo(node.ChildrenPort));
            }

            child?.RecalculateOrder();             //This will calculate the order of its siblings too
            return(node);
        }