Substitutes template variables with listed values. List of values is counterpart for {@link #getVariables() list of variables}. When list of value is shorter than variables substitution is partial. When variable has pattern, value must fit to pattern, otherwise {@link IllegalArgumentException} is thrown.
Example1: for template "/{a}/{b}/{a}" {@link #getVariables()} returns "[a, b, a]"; providing here listof value "[foo, bar, baz]" results with "/foo/bar/baz".
Example2: for template "/{a}/{b}/{a}" providing list of values "[foo]" results with "/foo/{b}/{a}".
@param values values for variables
@return template with bound variables.
@throws IllegalArgumentException when values is null, any value does not match pattern etc.