public static List <FSMState> SaveFSMStates(this NodeCanvas.Framework.GraphOwner graphOwner)
        {
            FSM fsm = graphOwner.graph as FSM;

            if (fsm == null)
            {
                return(null);
            }

            var states = new List <FSMState>();

            var current = fsm.currentState;

            states.Add(current);

            while (current is NestedFSMState subState)
            {
                current = subState.nestedFSM?.currentState;

                if (current != null)
                {
                    states.Add(current);
                }
            }

            return(states);
        }
        public static void LoadFSMStates(this NodeCanvas.Framework.GraphOwner graphOwner, List <FSMState> states)
        {
            FSM fsm = graphOwner.graph as FSM;

            if (fsm == null)
            {
                return;
            }

            foreach (var state in states)
            {
                fsm.EnterState(state);

                if (fsm.currentState is NestedFSMState subState)
                {
                    fsm = subState.nestedFSM ?? null;
                }
            }
        }