code: public IPAddress toAddress(IPVersion version) throws AddressStringException, IncompatibleAddressException {
  		validate(); // call validate so that we throw consistently, cover type == INVALID, and ensure the addressProvider exists
  		return addressProvider.getProviderAddress(version);
  	}
docs: Produces the {@link IPAddress} of the specified address version corresponding to this IPAddressString.
  <p>
  In most cases the string indicates the address version and calling {@link #toAddress()} is sufficient, with a few exceptions.
  <p>
  When this object represents only a network prefix length,
  specifying the address version allows the conversion to take place to the associated mask for that prefix length.
  <p>
  When this object represents all addresses, specifying the address version allows the conversion to take place
  to the associated representation of all IPv4 or all IPv6 addresses.
  <p>
  When this object represents the empty string and that string is interpreted as a loopback, then it returns
  the corresponding loopback address.  If empty strings are not interpreted as loopback, null is returned.
  <p>
  When this object represents an ipv4 or ipv6 address, it returns that address if and only if that address matches the provided version.
  <p>
  If the string used to construct this object is an invalid format,
  or a format that does not match the provided version, then this method throws {@link AddressStringException}.
  <p>
  @param version the address version that this address should represent.
  @return
  @throws AddressStringException
  @throws IncompatibleAddressException address in proper format cannot be converted to an address: for masks inconsistent with associated address range, or ipv4 mixed segments that cannot be joined into ipv6 segments