public function execute()
    {
        $registered = false;
        if (self::$interceptor_stack === null)
        {
            $registered = true;
            self::registerErrorHandler();
        }
            
        array_push(self::$interceptor_stack, $this);
        $response = null;
        try
        {
            $response = call_user_func_array($this->func, func_get_args());
        }
        finally
        {
            array_pop(self::$interceptor_stack);

            if ($registered)
                self::unregisterErrorHandler();
        }
        return $response;
    }