code: public static String toAddressString(InetAddress ip, boolean ipv4Mapped) {
          if (ip instanceof Inet4Address) {
              return ip.getHostAddress();
          }
          if (!(ip instanceof Inet6Address)) {
              throw new IllegalArgumentException("Unhandled type: " + ip);
          }
  
          return toAddressString(ip.getAddress(), 0, ipv4Mapped);
      }
docs: Returns the {@link String} representation of an {@link InetAddress}.
  <ul>
  <li>Inet4Address results are identical to {@link InetAddress#getHostAddress()}</li>
  <li>Inet6Address results adhere to
  <a href="http://tools.ietf.org/html/rfc5952#section-4">rfc 5952 section 4</a> if
  {@code ipv4Mapped} is false.  If {@code ipv4Mapped} is true then "IPv4 mapped" format
  from <a href="http://tools.ietf.org/html/rfc4291#section-2.5.5">rfc 4291 section 2</a> will be supported.
  The compressed result will always obey the compression rules defined in
  <a href="http://tools.ietf.org/html/rfc5952#section-4">rfc 5952 section 4</a></li>
  </ul>
  <p>
  The output does not include Scope ID.
  @param ip {@link InetAddress} to be converted to an address string
  @param ipv4Mapped
  <ul>
  <li>{@code true} to stray from strict rfc 5952 and support the "IPv4 mapped" format
  defined in <a href="http://tools.ietf.org/html/rfc4291#section-2.5.5">rfc 4291 section 2</a> while still
  following the updated guidelines in
  <a href="http://tools.ietf.org/html/rfc5952#section-4">rfc 5952 section 4</a></li>
  <li>{@code false} to strictly follow rfc 5952</li>
  </ul>
  @return {@code String} containing the text-formatted IP address