@Override
        public Routed<V> find(RoutingContext routingCtx) {
            final V cached = findCache.getIfPresent(routingCtx);
            if (cached != null) {
                // RoutingResult may be different to each other for every requests, so we cannot
                // use it as a cache value.
                final Route route = routeResolver.apply(cached);
                final RoutingResult routingResult = route.apply(routingCtx, false);
                return Routed.of(route, routingResult, cached);
            }

            final Routed<V> result = delegate.find(routingCtx);
            if (result.isPresent() && result.route().isCacheable() &&
                !dynamicPredicateRoutes.contains(result.route())) {
                findCache.put(routingCtx, result.value());
            }
            return result;
        }
A {@link Router} which is wrapped with a {@link Cache} layer.
core/src/main/java/com/linecorp/armeria/server/RouteCache.java