private boolean checkBlockOneEndAddress(Address end) {

		if (end == null) {
			setStatusText("Invalid Address");
			return false;
		}

		Address start = block.getStart();

		if (end.compareTo(start) < 0) {
			setStatusText("End address must be greater than start");
			return false;
		}
		if (end.compareTo(block.getEnd()) == 0) {
			return false;
		}
		// change block One length and blockTwoStart, blockTwoLength
		long length = 0;
		try {
			length = end.subtract(start) + 1;
		}
		catch (IllegalArgumentException e) {
			setStatusText(e.getMessage());
			return false;
		}
		long blockSize = block.getSize();
		if (length > blockSize) {
			setStatusText(
				"End address must be less than original block end (" + block.getEnd() + ")");
			return false;
		}
		blockOneLengthField.setValue(Long.valueOf(length));

		try {
			Address b2Start = end.addNoWrap(1);
			blockTwoStart.setAddress(b2Start);
			length = block.getEnd().subtract(b2Start) + 1;
			blockTwoLengthField.setValue(Long.valueOf(length));
		}
		catch (Exception e) {
			if (e instanceof AddressOverflowException) {
				setStatusText("Could not create new start address");
			}
			return false;
		}
		return true;

	}
Listener on the RegisterField inputs; update other fields when either
of these fields change.
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/memory/SplitBlockDialog.java