code: public Map<String, String> match(String uri) {
  		Assert.notNull(uri, "'uri' must not be null");
  		Map<String, String> result = new LinkedHashMap<String, String>(this.variableNames.size());
  		Matcher matcher = this.matchPattern.matcher(uri);
  		if (matcher.find()) {
  			for (int i = 1; i <= matcher.groupCount(); i++) {
  				String name = this.variableNames.get(i - 1);
  				String value = matcher.group(i);
  				result.put(name, value);
  			}
  		}
  		return result;
  	}
docs: Match the given URI to a map of variable values. Keys in the returned map are variable names,
  values are variable values, as occurred in the given URI.
  <p>Example:
  <pre class="code">
  UriTemplate template = new UriTemplate("https://example.com/hotels/{hotel}/bookings/{booking}");
  System.out.println(template.match("https://example.com/hotels/1/bookings/42"));
  </pre>
  will print: <blockquote>{@code {hotel=1, booking=42}}</blockquote>
  @param uri the URI to match to
  @return a map of variable values