@Test
	public void testAddDiffCustomReturnTypeToNonCustomStorage() throws Exception {
		// 0100194b		FUN_0100194b	body:100194b-1001977
		// 01001978		FUN_01001978	body:1001978-1001ae2
		// 01001ae3		FUN_01001ae3	body:1001ae3-100219b

		// 01002950		FUN_01002950	body:1002950-100299d
		// 0100299e		FUN_0100299e	body:100299e-1002a90
		// 01002a91		FUN_01002a91	body:1002a91-1002b43

		mtf.initialize("NotepadMergeListingTest", new ProgramModifierListener() {

			@Override
			public void modifyLatest(ProgramDB program) throws Exception {
				AddressSet body1001979 =
					new AddressSet(addr(program, "0x1001979"), addr(program, "0x100199a"));
				createFunction(program, "0x1001979", "FUN_01001979", body1001979);
				Function func = getFunction(program, "0x1001979");
				func.setReturnType(new Undefined2DataType(), SourceType.ANALYSIS);

				AddressSet body10029a1 =
					new AddressSet(addr(program, "0x10029a1"), addr(program, "0x10029ca"));
				createFunction(program, "0x10029a1", "FUN_010029a1", body10029a1);
				func = getFunction(program, "0x10029a1");
				func.setCustomVariableStorage(true);
				func.setReturn(new Undefined2DataType(),
					new VariableStorage(program, program.getRegister("r0l")),
					SourceType.USER_DEFINED);
			}

			@Override
			public void modifyPrivate(ProgramDB program) throws Exception {
				AddressSet body1001979 =
					new AddressSet(addr(program, "0x1001979"), addr(program, "0x100199a"));
				createFunction(program, "0x1001979", "FUN_01001979", body1001979);
				Function func = getFunction(program, "0x1001979");
				func.setCustomVariableStorage(true);
				func.setReturn(new WordDataType(),
					new VariableStorage(program, program.getRegister("r0l")),
					SourceType.USER_DEFINED);

				AddressSet body10029a1 =
					new AddressSet(addr(program, "0x10029a1"), addr(program, "0x10029ca"));
				createFunction(program, "0x10029a1", "FUN_010029a1", body10029a1);
				func = getFunction(program, "0x10029a1");
				func.setCustomVariableStorage(true);
				func.setReturn(new Undefined2DataType(),
					new VariableStorage(program, program.getRegister("r1l")),
					SourceType.USER_DEFINED);
			}
		});

		executeMerge(ASK_USER);
//		chooseVariousOptions("0x1001979", new int[] { INFO_ROW, KEEP_LATEST }); // non-custom storage
		chooseRadioButton(CHECKED_OUT_BUTTON_NAME); // custom float return type for function at 0x01001979
		chooseRadioButton(CHECKED_OUT_BUTTON_NAME); // custom byte return type for function at 0x10029a1
		waitForMergeCompletion();

		AddressSet body1001979 = new AddressSet(addr("0x1001979"), addr("0x100199a"));
		checkFunction(resultProgram, "0x1001979", "FUN_01001979", body1001979);

		Function func = getFunction(resultProgram, "0x1001979");
		assertTrue(func.hasCustomVariableStorage());
		assertTrue(new WordDataType().isEquivalent(func.getReturnType()));
		// Calling convention will cause the storage to allocate 10 bytes.
		assertEquals("r0l:2", func.getReturn().getVariableStorage().toString()); // reflects dynamic storage 

		func = getFunction(resultProgram, "0x10029a1");
		assertSameDataType(new Undefined2DataType(), func.getReturnType());
		assertEquals("r1l:2", func.getReturn().getVariableStorage().toString());
	}
Test the merge of the versioned program's listing.
Ghidra/Features/Base/src/test.slow/java/ghidra/app/merge/listing/FunctionMergeManagerTest.java