        function functionHook(frame, type)        {            switch (type)            {                case TYPE_FUNCTION_CALL:                {                    ++hookFrameCount;                                        if (stepMode == STEP_OVER)                        jsd.interruptHook = null;					if (fbs.DBG_STEP) ddd("functionHook TYPE_FUNCTION_CALL stepMode = "+getPropertyName(nsIFireBug, stepMode)/*@explore*/						     +" hookFrameCount="+hookFrameCount+" stepFrameCount="+stepFrameCount+"\n");               /*@explore*/                    break;                }                case TYPE_FUNCTION_RETURN:                {                    --hookFrameCount;					if (fbs.DBG_STEP) ddd("functionHook TYPE_FUNCTION_RETURN stepMode = "+getPropertyName(nsIFireBug, stepMode)/*@explore*/						                +" hookFrameCount="+hookFrameCount+" stepFrameCount="+stepFrameCount+"\n");    /*@explore*/                    if (hookFrameCount == 0) {                    	if ( (stepMode == STEP_INTO) || (stepMode == STEP_OVER) ) {                    	    fbs.stopStepping();                    	    stepMode = STEP_SUSPEND;                    	    fbs.hookInterrupts();                    	} else                    	{                             fbs.stopStepping();                        }                    }                    else if (stepMode == STEP_OVER) //XXXnew - conflict                    {                        if (hookFrameCount <= stepFrameCount)                            fbs.hookInterrupts();                    }                    else if (stepMode == STEP_OUT)                    {                        if (hookFrameCount < stepFrameCount)                            fbs.hookInterrupts();                    }                                        break;                }            }        }
2454	/local1/tlutelli/issta_data/temp/all_js/javascript/2007_temp/2007/2454/be05bb1b5ce9dc07f6f4f994ca42945edd646c04/firebug-service.js/buggy/extension/components/firebug-service.js