Decorator that can be used to add global request
        interceptors easily to the builder.

        The returned wrapper function can be applied as a decorator on
        any function that processes the input. The function should
        follow the signature of the process function in
        :py:class:`ask_sdk_runtime.dispatch_components.request_components.AbstractRequestInterceptor`
        class.

        :return: Wrapper function that can be decorated on a
            interceptor process function.

def global_request_interceptor(self):
        # type: () -> Callable
        """Decorator that can be used to add global request
        interceptors easily to the builder.

        The returned wrapper function can be applied as a decorator on
        any function that processes the input. The function should
        follow the signature of the process function in
        :py:class:`ask_sdk_runtime.dispatch_components.request_components.AbstractRequestInterceptor`
        class.

        :return: Wrapper function that can be decorated on a
            interceptor process function.
        """
        def wrapper(process_func):
            if not callable(process_func):
                raise SkillBuilderException(
                    "Global Request Interceptor process_func input parameter "
                    "should be callable")

            class_attributes = {
                "process": lambda self, handler_input: process_func(
                    handler_input)
            }

            request_interceptor = type(
                "RequestInterceptor{}".format(
                    process_func.__name__.title().replace("_", "")),
                (AbstractRequestInterceptor,), class_attributes)

            self.add_global_request_interceptor(
                request_interceptor=request_interceptor())
        return wrapper