docs: protected boolean isChangedByMask(int maskValue, Integer segmentPrefixLength) throws IncompatibleAddressException {
  		boolean hasBits = (segmentPrefixLength != null);
  		if(hasBits && (segmentPrefixLength < 0 || segmentPrefixLength > getBitCount())) {
  			throw new PrefixLenException(this, segmentPrefixLength);
  		}
  		
  		//note that the mask can represent a range (for example a CIDR mask), 
  		//but we use the lowest value (maskSegment.value) in the range when masking (ie we discard the range)
  		int value = getSegmentValue();
  		int upperValue = getUpperSegmentValue();
  		return value != (value & maskValue) ||
  				upperValue != (upperValue & maskValue) ||
  						(isPrefixed() ? !getSegmentPrefixLength().equals(segmentPrefixLength) : hasBits);
  	}