@Override
	public String toCanonicalString() {
		String result;
		if(hasNoStringCache() || (result = stringCache.canonicalString) == null) {
			stringCache.canonicalString = result = toNormalizedString(IPv6StringCache.canonicalParams);
		}
		return result;
	}
@ Override public String toCanonicalString ( ) { String result ; if ( hasNoStringCache ( ) || ( result = stringCache . canonicalString ) == null ) { stringCache . canonicalString = result = toNormalizedString ( IPv6StringCache . canonicalParams ) ; } return result ; }
This produces a canonical string.

RFC 5952 describes canonical representations.
http://en.wikipedia.org/wiki/IPv6_address#Recommended_representation_as_text
http://tools.ietf.org/html/rfc5952