docs: private String[] decodePathTokens(String uri) {
  		// Need to split the original URI (instead of QueryStringDecoder#path) then decode the tokens (components),
  		// otherwise /test1/123%2F456 will not match /test1/:p1
  
  		int qPos = uri.indexOf("?");
  		String encodedPath = (qPos >= 0) ? uri.substring(0, qPos) : uri;
  
  		String[] encodedTokens = PathPattern.removeSlashesAtBothEnds(encodedPath).split("/");
  
  		String[] decodedTokens = new String[encodedTokens.length];
  		for (int i = 0; i < encodedTokens.length; i++) {
  			String encodedToken = encodedTokens[i];
  			decodedTokens[i] = QueryStringDecoder.decodeComponent(encodedToken);
  		}
  
  		return decodedTokens;
  	}