                     {
                         for each (guard in transition.guards)
                         {
-                            if (guard.evaluate(this, event))
+                            if (guard.evaluate(_that || this, event))
                             {
                                 if (trueGuard)
                                 {

        }

        // TODO validate reachability of states
        public function set states(value:Vector.<IState>):void {}

        public function mapEvent(event:String, it:ITransition):void
        {

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