public void mergeUserProperty(String userPropertyName, Address originAddress) {
		Address resultAddress = originToResultTranslator.getAddress(originAddress);
		PropertyMapManager resultPmm = resultProgram.getUsrPropertyManager();
		PropertyMapManager originPmm = originProgram.getUsrPropertyManager();
		PropertyMap<?> resultOpm = resultPmm.getPropertyMap(userPropertyName);
		PropertyMap<?> originOpm = originPmm.getPropertyMap(userPropertyName);
		Object resultObject = resultOpm != null ? resultOpm.get(resultAddress) : null;
		Object originObject = originOpm != null ? originOpm.get(originAddress) : null;

		if (!Objects.equals(resultObject, originObject)) {
			if (resultObject != null && resultOpm != null) {
				resultOpm.remove(resultAddress);
			}
			if (originObject != null) {
				try {
					if (resultOpm == null) {
						resultOpm = createPropertyMap(userPropertyName, resultProgram, originOpm);
					}
					resultOpm.add(resultAddress, originObject);
				}
				catch (DuplicateNameException e) {
					throw new AssertException(e);
				}
				catch (IllegalArgumentException e) {
					String msg = "Property merge failed at " + resultAddress + " '" +
						userPropertyName + "': " + e.getMessage();
					Msg.error(this, msg);
					errorMsg.append(msg + "\n");
				}
			}
		}
	}
Replaces the user defined properties from the specified origin address in the origin program
to the equivalent result address in the result program.
Note: To merge properties, there must be a code unit AT the equivalent address
in the result program.
@param userPropertyName original property name
@param originAddress the address of the code unit to get the properties from in the origin program.
Ghidra/Features/Base/src/main/java/ghidra/program/util/ProgramMerge.java