RoutingTrieBuilder<V> add(String path, V value, boolean hasHighPrecedence) {
        requireNonNull(path, "path");
        requireNonNull(value, "value");

        checkArgument(!path.isEmpty(), "A path should not be empty.");
        checkArgument(path.charAt(0) != '*' && path.charAt(0) != ':',
                      "A path starting with '*' or ':' is not allowed.");
        checkArgument(path.indexOf(KEY_PARAMETER) < 0,
                      "A path should not contain %s: %s",
                      Integer.toHexString(KEY_PARAMETER), path);
        checkArgument(path.indexOf(KEY_CATCH_ALL) < 0,
                      "A path should not contain %s: %s",
                      Integer.toHexString(KEY_CATCH_ALL), path);
        routes.add(new Entry<>(path, value, hasHighPrecedence));
        return this;
    }
Adds a path and a value to be built as {@link RoutingTrie}.

@param path  the path to serve
@param value the value belonging to the path
@param hasHighPrecedence whether the path being added has high precedence or not.
                         Any values that match a path with high precedence will be returned
                         before the values with low precedence. Within the same precedence,
                         values are returned in the order the paths were defined.
core/src/main/java/com/linecorp/armeria/server/RoutingTrieBuilder.java