public override void OnInspectorGUI()
        {
            var asset = (ScriptingGraphAsset)target;
            var def   = asset.Definition;

            for (var index = 0; index < def.NodeTable.Count; index++)
            {
                NodeId nodeId   = new NodeId((uint)index);
                INode  node     = def.NodeTable[index];
                var    nodeType = node.GetType();
                if (EditorGUILayout.Foldout(true, $"{index+1} {nodeType.Name}"))
                {
                    EditorGUI.indentLevel++;
                    foreach (var fieldInfo in BaseDotsNodeModel.GetNodePorts(nodeType))
                    {
                        IPort port      = fieldInfo.GetValue(node) as IPort;
                        var   portIndex = port.GetPort().Index;
                        var   portInfo  = def.PortInfoTable[(int)portIndex];
                        // portInfo.

                        using (new EditorGUILayout.HorizontalScope(GUILayout.ExpandWidth(false)))
                        {
                            EditorGUILayout.PrefixLabel($"{portIndex} {fieldInfo.Name}");
                            var    isInput = port is IInputDataPort || port is IInputTriggerPort;
                            string io      = isInput ? "I" : "O";
                            var    isData  = port is IInputDataPort || port is IOutputDataPort;
                            string dt      = isData ? "D" : "T";
                            string m       = (port is IMultiDataPort multiPort)
                                ? "M" + multiPort.GetDataCount()
                                : String.Empty;
                            var portInfoDataIndex = isData && def.HasConnectedValue(port) ? portInfo.DataIndex.ToString() : "";
                            EditorGUILayout.LabelField($"{io}\t{dt}\t{m}\t{portInfoDataIndex}");
                        }
                    }

                    EditorGUI.indentLevel--;
                }
            }

            EditorGUILayout.Space();
            base.OnInspectorGUI();
        }
        public static GraphElement CreateDotsNode(this INodeBuilder builder, Store store, BaseDotsNodeModel model)
        {
            var functionNode = new DotsNode(model, store, builder.GraphView);

            return(functionNode);
        }