class HttpRouterProvider implements Provider<Router> {

    @Override
    public Router get() {
        Router router = new Router();
        for (HttpRouteProvider routeProvider : routeProviders) {
            injector.injectMembers(routeProvider);
            Set<HttpRoute> routes = routeProvider.get();
            for (HttpRoute route : routes) {
                router.addRoute(requestUriMatcher(route.getMode(), route.getUriTemplate()), route.getHandler());
            }
        }
        return router;
    }

    @Inject  HttpRouterProvider(Injector injector, Iterable<HttpRouteProvider> routeProviders);

}