int _propCount = -1;     // bug where action doesn't set dirty flag when length of array is edited without further edition on other properties

    public override bool OnGUI()
    {
        bool edited = false;
        XmlGetNextNodeListProperties _target = (XmlGetNextNodeListProperties)target;

        EditField("nodeListReference");

        EditField("reset");
        EditField("loopEvent");
        EditField("finishedEvent");
        EditField("index");


        if (_target.storeProperties == null || (_target.storeProperties != null && _target.storeProperties.properties != null && _target.storeProperties.properties.Length == 0))
        {
            if (_target.storeNodeProperties != null)
            {
                _propCount = _target.storeNodeProperties.Length;
            }

            EditField("storeNodeProperties");

            if (_target.storeNodeProperties != null && _propCount != _target.storeNodeProperties.Length)
            {
                edited = true;
            }
        }
        else
        {
            edited = edited || DataMakerActionEditorUtils.EditFsmPropertiesStorage(_target.Fsm, _target.storeProperties);
        }

        return(GUI.changed || edited);
    }
    public override bool OnGUI()
    {
        bool edited = false;
        XmlGetNextNodeListProperties _target = (XmlGetNextNodeListProperties)target;

        EditField("nodeListReference");

        EditField("reset");
        EditField("loopEvent");
        EditField("finishedEvent");
        EditField("index");
        EditField("reference");

        edited = edited || DataMakerActionEditorUtils.EditFsmPropertiesStorage(_target.Fsm, _target.storeProperties);

        EditField("foundEvent");
        EditField("notFoundEvent");
        EditField("errorEvent");

        return(GUI.changed || edited);
    }