@Test
 public void copyToUriComponentsBuilder() {
   UriComponents source = UriComponentsBuilder.fromPath("/foo/bar").pathSegment("ba/z").build();
   UriComponentsBuilder targetBuilder = UriComponentsBuilder.newInstance();
   source.copyToUriComponentsBuilder(targetBuilder);
   UriComponents result = targetBuilder.build().encode();
   assertEquals("/foo/bar/ba%2Fz", result.getPath());
   assertEquals(Arrays.asList("foo", "bar", "ba%2Fz"), result.getPathSegments());
 }
 @Test
 public void encode() {
   UriComponents uriComponents = UriComponentsBuilder.fromPath("/hotel list").build();
   UriComponents encoded = uriComponents.encode();
   assertEquals("/hotel%20list", encoded.getPath());
 }
 @Test(expected = IllegalArgumentException.class)
 public void invalidCharacters() {
   UriComponentsBuilder.fromPath("/{foo}").build(true);
 }
 @Test(expected = IllegalArgumentException.class)
 public void invalidEncodedSequence() {
   UriComponentsBuilder.fromPath("/fo%2o").build(true);
 }
 @Test(expected = IllegalStateException.class)
 public void expandEncoded() {
   UriComponentsBuilder.fromPath("/{foo}").build().encode().expand("bar");
 }