@Override
	protected boolean domainObjectChanged(DomainObjectChangedEvent changeEvent) {

		for (int i = 0; i < changeEvent.numRecords(); i++) {
			DomainObjectChangeRecord domainObjectRecord = changeEvent.getChangeRecord(i);
//			int eventType = domainObjectRecord.getEventType();
			EventType eventType = domainObjectRecord.getEventType();
			if (eventType == DomainObjectEvent.RESTORED) {
				return checkForAddressChange(domainObjectRecord);
			}
			if (eventType instanceof ProgramEvent type) {
				switch (type) {
					case FUNCTION_CHANGED:
						ProgramChangeRecord changeRecord = (ProgramChangeRecord) domainObjectRecord;
						Address functionAddress = changeRecord.getStart();
						if (referencesContain(functionAddress) &&
							functionContainsDataType(functionAddress)) {
							return checkForAddressChange(changeRecord);
						}
						break;

					case MEMORY_BLOCK_MOVED:
					case MEMORY_BLOCK_REMOVED:
					case SYMBOL_REMOVED:
					case REFERENCE_REMOVED:
					case CODE_REMOVED:
					case FUNCTION_REMOVED:
					case VARIABLE_REFERENCE_REMOVED:
						return checkForAddressChange(domainObjectRecord);
					case CODE_ADDED:
					case MEMORY_BLOCK_ADDED:
					case SYMBOL_ADDED:
					case REFERENCE_ADDED:
					case FUNCTION_ADDED:
					case VARIABLE_REFERENCE_ADDED:
					case DATA_TYPE_RENAMED:
					case DATA_TYPE_REPLACED:
						// signal that the reference addresses may be out-of-date
						if (modelFreshnessListener != null) {
							modelFreshnessListener.stateChanged(new ChangeEvent(this));
						}
						return true;
					default:
				}
			}
		}
		return false;
	}
The base data type that this location descriptor describes (this may be the same as the
original data type.
@return the type.
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/locationreferences/DataTypeLocationDescriptor.java