docs: public MACAddressSection toEUI64(boolean asMAC) {
  		int originalSegmentCount = getSegmentCount();
  		if(!isExtended()) {
  			MACAddressCreator creator = getAddressCreator(addressSegmentIndex, true);
  			if(addressSegmentIndex + originalSegmentCount < 3 || addressSegmentIndex > 3) {
  				return this;
  			}
  			//we are in a situation where we are including segments at index 3 and 4 in an address, which are the ff:fe or ff:ff segments
  			MACAddressSegment segs[] = creator.createSegmentArray(originalSegmentCount + 2);
  			int frontCount;
  			if(addressSegmentIndex < 3) {
  				frontCount = 3 - addressSegmentIndex;
  				getSegments(0, frontCount, segs, 0);
  			} else {
  				frontCount = 0;
  			}
  			MACAddressSegment ffSegment = creator.createSegment(0xff);
  			segs[frontCount] = ffSegment;
  			segs[frontCount + 1] = asMAC ? ffSegment : creator.createSegment(0xfe);
  			Integer prefLength = getPrefixLength();
  			if(originalSegmentCount > frontCount) {
  				getSegments(frontCount, originalSegmentCount, segs, frontCount + 2);
  				//If the prefLength is exactly at the end of the initial segments before ff:fe or ff:ff, we could put it either before or after the ff:fe or ff:ff
  				//Since the ff:fe or ff:ff is not part of any OUI, we put it before
  				//This is also consistent with what we do with IP address inserts, where inserting at 3rd segment of 1.2.4/16 results in 1.2.3.4/16
  				if(prefLength != null && prefLength > frontCount << 3) {
  					prefLength += MACAddress.BITS_PER_SEGMENT << 1; //2 segments
  				}
  			}
  			MACAddressSection result = creator.createSectionInternal(segs, addressSegmentIndex, true);
  			result.assignPrefixLength(prefLength);
  			return result;
  		}
  		int endIndex = addressSegmentIndex + originalSegmentCount;
  		if(addressSegmentIndex <= 3) {
  			if(endIndex > 4) {
  				int index3 = 3 - addressSegmentIndex;
  				MACAddressSegment seg3 = getSegment(index3);
  				MACAddressSegment seg4 = getSegment(index3 + 1);
  				if(!seg4.matches(asMAC ? 0xff : 0xfe) || !seg3.matches(0xff)) {
  					throw new IncompatibleAddressException(this, "ipaddress.mac.error.not.eui.convertible");
  				}
  			} else if(endIndex == 4) {
  				MACAddressSegment seg3 = getSegment(3 - addressSegmentIndex);
  				if(!seg3.matches(0xff)) {
  					throw new IncompatibleAddressException(this, "ipaddress.mac.error.not.eui.convertible");
  				}
  			}
  		} else if(addressSegmentIndex == 4) {
  			if(endIndex > 4) {
  				MACAddressSegment seg4 = getSegment(4 - addressSegmentIndex);
  				if(!seg4.matches(asMAC ? 0xff : 0xfe)) {
  					throw new IncompatibleAddressException(this, "ipaddress.mac.error.not.eui.convertible");
  				}
  			}
  		}
  		return this;
  	}