code: private void verify() {
  		if (!this.encoded) {
  			return;
  		}
  		verifyUriComponent(getScheme(), Type.SCHEME);
  		verifyUriComponent(this.userInfo, Type.USER_INFO);
  		verifyUriComponent(this.host, getHostType());
  		this.path.verify();
  		for (Map.Entry<String, List<String>> entry : queryParams.entrySet()) {
  			verifyUriComponent(entry.getKey(), Type.QUERY_PARAM);
  			for (String value : entry.getValue()) {
  				verifyUriComponent(value, Type.QUERY_PARAM);
  			}
  		}
  		verifyUriComponent(getFragment(), Type.FRAGMENT);
  	}
docs: Verifies all URI components to determine whether they contain any illegal
  characters, throwing an {@code IllegalArgumentException} if so.
  @throws IllegalArgumentException if any component has illegal characters