private boolean checkBlockTwoStartChanged(Address start) {
		if (start == null) {
			setStatusText("Invalid Address");
			return false;
		}
		Address end = block.getEnd();
		if (start == null) {
			return false;
		}
		else if (start.compareTo(end) > 0) {
			setStatusText("Start address must not be greater than end");
			return false;
		}
		else if (start.compareTo(block.getStart()) <= 0) {
			setStatusText("Start address must be greater than original block start (" +
				block.getStart() + ")");
			return false;
		}

		// change block Two length, blockOneEnd, block One length
		long length = end.subtract(start) + 1;
		blockTwoLengthField.setValue(Long.valueOf(length));
		try {
			Address b1End = start.subtractNoWrap(1);
			blockOneEnd.setAddress(b1End);
			length = b1End.subtract(block.getStart()) + 1;
			blockOneLengthField.setValue(Long.valueOf(length));
		}
		catch (Exception e) {
			if (e instanceof AddressOverflowException) {
				setStatusText("Could not create end address for split block");
			}
			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