#9 /a/{p}/{p*} conflicts with /a/{p*} (which is not reachable)
#8 '/a/b/{p*}' is more specific than '/{p*5}'
#7 /a/b/{p*} is more specific than /a/{b}/{c}
#6 '/a/{b*}' is less specific than '/a/{b}/{c*}'
#3 Support for flexible routes
#2 Match case-insensitive paths with no params