         public var unmappedEventException:Boolean;
         public var noTransitionException:Boolean;
 
-        /*
-          key: IEvent.name
-        value: [ITransition]
-        */
+        /**
+         *   key: IEvent.name
+         * value: [ITransition]
+         */
         protected var _eventMap:Object = {};
         protected var _events:Vector.<IEvent> = new Vector.<IEvent>;
         protected var _states:Vector.<IState> = new Vector.<IState>;

            {
                for each (var fsm:IFsm in state.subMachines)
                {
                    if (fsm is Fsm)
                    {
                        Fsm(fsm).that = this._that;
                    }
                    
                    fsm.pushEvent(event);
                }
            }

        protected var _currentState:IState;
        protected var _inEventLoop:Boolean;
        protected var _destroyed:Boolean;
        protected var _actionFsm:IFsm;
        protected var _guardFsm:IFsm;

        /**
         * An optional root IFsm to use for IGuard#evaluate and IAction#execute
         */
        public function set rootFsm(value:IFsm):void
        {
            actionFsm = value;
            guardFsm = value;
        }

        /**
         * An optional IFsm to use for IAction#execute
         */
        public function set actionFsm(value:IFsm):void
        {
            _actionFsm = value;
        }

        /**
         * An optional IFsm to use for IGuard#evaluate
         */
        public function set guardFsm(value:IFsm):void
        {
            _guardFsm = value;
        }

        public function init(value:IState):void
