code: @Override
  	public String getString() {
  		String result = cachedString;
  		if(result == null) {
  			synchronized(this) {
  				result = cachedString;
  				if(result == null) {
  					if(isSinglePrefixBlock() || !isMultiple()) { //covers the case of !isMultiple, ie single addresses, when there is no prefix or the prefix is the bit count
  						result = getDefaultLowerString();
  					} else if(isFullRange()) {
  						result = IPAddress.SEGMENT_WILDCARD_STR;
  					} else {
  						long upperValue = getUpperDivisionValue();
  						if(isPrefixBlock()) {
  							upperValue &= getDivisionNetworkMask(getDivisionPrefixLength());
  						}
  						result = getDefaultRangeString(getDivisionValue(), upperValue, getDefaultTextualRadix());
  					}
  					cachedString = result;
  				}
  			}
  		}
  		return result;
  	}
docs: Produces a normalized string to represent the segment.
  If the segment CIDR prefix length covers the range, then it is assumed to be a CIDR, and the string has only the lower value of the CIDR range.
  Otherwise, the explicit range will be printed.
  @return