@Nullable
    @Override
    RoutingResultBuilder doApply(RoutingContext routingCtx) {
        final Matcher m = pattern.matcher(routingCtx.path());
        if (!m.matches()) {
            return null;
        }

        final RoutingResultBuilder builder = RoutingResult.builderWithExpectedNumParams(numParams)
                                                          .path(mappedPath(prefix, routingCtx.path()))
                                                          .query(routingCtx.query());
        for (int i = 1; i <= numParams; i++) {
            final String value = firstNonNull(m.group(i), "");
            builder.rawParam(StringUtil.toString(i - 1), value);
        }

        return builder;
    }
/" + glob;
        pathPattern = aGlob;
        paths = ImmutableList.of(pattern.pattern(), aGlob);
    }

    @Override
    PathMapping doWithPrefix(String prefix) {
        final String prefixGlob;
        int numGroupsToSkip = this.numGroupsToSkip;
        if (glob.startsWith("/")) {
            prefixGlob = concatPaths(prefix, glob);
        } else {
            prefixGlob = concatPaths(prefix + "*
core/src/main/java/com/linecorp/armeria/server/GlobPathMapping.java