def create_routes(routes: Tuple[HTTPMethod], handle_http: Callable,
                  default_base_handler_class: Any) -> List[Tuple[str, Any]]:
    """Creates handler routes from the provided routes.

    :param routes: A tuple containing the route and another tuple with
        all http methods allowed for the route.
    :param handle_http: The HTTP handler function that should be
        used to wrap the logic functions.
    :param default_base_handler_class: The default base handler class that
        should be used.
    :returns: A list of tuples containing the route and generated handler.
    """
    created_routes = []
    all_handler_names = []
    for r in routes:
        handler = None
        if r.base_handler_class is not None:
            base_handler_class = r.base_handler_class
        else:
            base_handler_class = default_base_handler_class

        # Define the handler name.  To prevent issues where auto-generated
        # handler names conflict with existing, appending a number to the
        # end of the hanlder name if it already exists.
        handler_name = get_handler_name(r, r.methods[0].logic)
        if handler_name in all_handler_names:
            handler_name = '{}{}'.format(
                handler_name, len(all_handler_names))
        all_handler_names.append(handler_name)

        for method in r.methods:
            logic = method.logic
            http_method = method.method
            http_func = create_http_method(logic, http_method, handle_http,
                                           before=r.before, after=r.after)

            handler_methods_and_properties = {
                '__name__': handler_name,
                '_doctor_heading': r.heading,
                'methods': set([http_method.upper()]),
                http_method: http_func,
            }
            if handler is None:
                handler = type(
                    handler_name, (base_handler_class,),
                    handler_methods_and_properties)
            else:
                setattr(handler, http_method, http_func)
                # This is specific to Flask.  Its MethodView class
                # initializes the methods attribute in __new__ so we
                # need to add all the other http methods we are defining
                # on the handler after it gets created by type.
                if hasattr(handler, 'methods'):
                    handler.methods.add(http_method.upper())
        created_routes.append((r.route, handler))
    return created_routes
Creates handler routes from the provided routes.

    :param routes: A tuple containing the route and another tuple with
        all http methods allowed for the route.
    :param handle_http: The HTTP handler function that should be
        used to wrap the logic functions.
    :param default_base_handler_class: The default base handler class that
        should be used.
    :returns: A list of tuples containing the route and generated handler.