code: public final ProxyHandler newProxyHandler() {
  		InetSocketAddress proxyAddr = this.address.get();
  		String username = this.username;
  		String password = Objects.nonNull(username) && Objects.nonNull(this.password) ?
  				this.password.apply(username) : null;
  
  		switch (this.type) {
  			case HTTP:
  				return Objects.nonNull(username) && Objects.nonNull(password) ?
  						new HttpProxyHandler(proxyAddr, username, password, this.httpHeaders.get()) :
  						new HttpProxyHandler(proxyAddr, this.httpHeaders.get());
  			case SOCKS4:
  				return Objects.nonNull(username) ? new Socks4ProxyHandler(proxyAddr, username) :
  						new Socks4ProxyHandler(proxyAddr);
  			case SOCKS5:
  				return Objects.nonNull(username) && Objects.nonNull(password) ?
  						new Socks5ProxyHandler(proxyAddr, username, password) :
  						new Socks5ProxyHandler(proxyAddr);
  		}
  		throw new IllegalArgumentException("Proxy type unsupported : " + this.type);
  	}
docs: Return a new eventual {@link ProxyHandler}
  
  @return a new eventual {@link ProxyHandler}