protected override void Init()
        {
            _valueNode   = (ValueNode)target;
            _valueOutPut = _valueNode.GetOutputPort(ValueNode.ValueOutPutPortName);

            if (_valueOutPut != null)
            {
                if (_valueOutPut.ValueType == null)
                {
                    _valueOutPut.ValueType = _valueNode.ValueType;
                }
            }

            windowContent = new TypeSelectPopupWindow(true);

            windowContent.OnChangeTypeSelect = type =>
            {
                _valueOutPut.ValueType = type;
                windowContent.editorWindow.Close();
                serializedObject.ApplyModifiedProperties();
                serializedObject.UpdateIfRequiredOrScript();
            };
        }
        protected override void OnInit()
        {
            _valueNode = (SystemObjectConditionNode)target;

            if (windowContent == null)
            {
                List <Type> types = new List <Type>();

                foreach (var unityRuntimeType in TypeUtil.UnityRuntimeTypes)
                {
                    if (typeof(ValueNode).IsAssignableFrom(unityRuntimeType))
                    {
                        var valueField = unityRuntimeType.GetField("_value", BindingFlags.Instance | BindingFlags.NonPublic);

                        if (valueField != null)
                        {
                            types.Add(valueField.FieldType);
                        }
                    }
                }

                windowContent = new TypeSelectPopupWindow(true, types);
            }

            _refreshInputPort();

            windowContent.OnChangeTypeSelect = type =>
            {
                _aInput.ValueType = type;
                _bInput.ValueType = type;

                windowContent.editorWindow.Close();
                serializedObject.ApplyModifiedProperties();
                serializedObject.UpdateIfRequiredOrScript();
            };
        }