code: @Override
  	public int compareTo(IPAddressString other) {
  		if(this == other) {
  			return 0;
  		}
  		boolean isValid = isValid();
  		boolean otherIsValid = other.isValid();
  		if(!isValid && !otherIsValid) {
  			return toString().compareTo(other.toString());
  		}
  		return addressProvider.providerCompare(other.addressProvider);
  	}
docs: All address strings are comparable.  If two address strings are invalid, their strings are compared.
  Otherwise, address strings are compared according to which type or version of string, and then within each type or version
  they are compared using the comparison rules for addresses.
  
  @param other
  @return