private void AddStates <TState, TTrigger>(HierarchicalStateMachine <TState, TTrigger> stateMachine)
        {
            if (_states.Count > 0)
            {
                for (int i = 0; i < _states.Count; i++)
                {
                    var current = _states[i];

                    TState stateId = (TState)current.StateId;
                    IState stateObject;

                    if (current.StateObject != null)
                    {
                        if (current.StateObject.InstantiateThis)
                        {
                            stateObject = Instantiate(current.StateObject);
                        }
                        else
                        {
                            stateObject = current.StateObject;
                        }
                    }
                    else
                    {
                        stateObject = new EmptyState();
                    }

                    stateMachine.AddState(stateId, stateObject);

                    if (stateObject is IStateEventHandler eventHandler)
                    {
                        stateMachine.SubscribeEventHandlerTo(stateId, eventHandler);
                    }
                }

                stateMachine.InitialState = (TState)InitialStateId;
            }
        }