private void mergePropertiesAtAddress(Address originAddress) {

		Address resultAddress;
		try {
			resultAddress = originToResultTranslator.getAddress(originAddress);
		}
		catch (AddressTranslationException e1) {
			return;
		}
		if (!resultProgram.getMemory().contains(resultAddress)) {
			return;
		}

		PropertyMapManager origPropertyMgr = originProgram.getUsrPropertyManager();
		PropertyMapManager resultPropertyMgr = resultProgram.getUsrPropertyManager();

		Iterator<String> propNames = resultPropertyMgr.propertyManagers();
		while (propNames.hasNext()) {
			String propertyName = propNames.next();
			PropertyMap<?> resultPropertyMap = resultPropertyMgr.getPropertyMap(propertyName);
			resultPropertyMap.remove(resultAddress);
		}

		propNames = origPropertyMgr.propertyManagers();
		while (propNames.hasNext()) {
			String propertyName = propNames.next();
			if (propertyName.equals("Bookmarks")) {
				continue; // ignore bookmarks as properties, since the bookmark merge gets these.
			}
			PropertyMap<?> origPropertyMap = origPropertyMgr.getPropertyMap(propertyName);
			if (origPropertyMap instanceof UnsupportedMapDB) {
				continue; // ignore property that isn't supported.
			}
			PropertyMap<?> resultPropertyMap = resultPropertyMgr.getPropertyMap(propertyName);
			Object value = origPropertyMap.get(originAddress);
			if (value != null) {
				try {
					if (resultPropertyMap == null) {
						resultPropertyMap =
							createPropertyMap(propertyName, resultProgram, origPropertyMap);
					}
					resultPropertyMap.add(resultAddress, value);
				}
				catch (DuplicateNameException e) {
					throw new AssertException(e);
				}
				catch (IllegalArgumentException e) {
					String msg = "Property merge failed at " + resultAddress + " '" + propertyName +
						"': " + e.getMessage();
					Msg.error(this, msg);
					errorMsg.append(msg + "\n");
				}
			}
		}
	}
Replaces the user defined properties from the origin program into the result
 program at the address that is equivalent to the origin address.
 Note: To merge properties, there must be a code unit AT the equivalent address
 in the result program.
@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