@Test
	public void testMergeCommentsAskUser() throws Exception {
		mtf.initialize("notepad", new ProgramModifierListener() {

			@Override
			public void modifyLatest(ProgramDB program) {
				Listing listing = program.getListing();

				CodeUnit cu = listing.getCodeUnitAt(addr(program, "0x1001000"));
				cu.setComment(CommentType.EOL, "EOL Comment");

				// All comments @ 10028b1
				cu = listing.getCodeUnitAt(addr(program, "0x10028b1"));
				cu.setComment(CommentType.EOL, "Latest EOL Comment");
				cu.setComment(CommentType.PRE, "Latest Pre Comment");
				cu.setComment(CommentType.POST, "Latest Post Comment");
				cu.setComment(CommentType.PLATE, "Latest Plate Comment");
				cu.setComment(CommentType.REPEATABLE, "Latest Repeatable Comment");
			}

			@Override
			public void modifyPrivate(ProgramDB program) {
				Listing listing = program.getListing();
				CodeUnit cu;

				// EOL Comment @ 100283e
				cu = listing.getCodeUnitAt(addr(program, "0x100283e"));
				cu.setComment(CommentType.EOL, "EOL Comment");

				// Pre Comment @ 1002840
				cu = listing.getCodeUnitAt(addr(program, "0x1002840"));
				cu.setComment(CommentType.PRE, "Pre Comment");

				// Post Comment @ 1002843
				cu = listing.getCodeUnitAt(addr(program, "0x1002843"));
				cu.setComment(CommentType.POST, "Post Comment");

				// Plate Comment @ 1002847
				cu = listing.getCodeUnitAt(addr(program, "0x1002847"));
				cu.setComment(CommentType.PLATE, "Plate Comment");

				// Repeatable Comment @ 100284a
				cu = listing.getCodeUnitAt(addr(program, "0x100284a"));
				cu.setComment(CommentType.REPEATABLE, "Repeatable Comment");

				// All comments @ 10028b1
				cu = listing.getCodeUnitAt(addr(program, "0x10028b1"));
				cu.setComment(CommentType.EOL, "My EOL Comment");
				cu.setComment(CommentType.PRE, "My Pre Comment");
				cu.setComment(CommentType.POST, "My Post Comment");
				cu.setComment(CommentType.PLATE, "My Plate Comment");
				cu.setComment(CommentType.REPEATABLE, "My Repeatable Comment");
			}
		});

		executeMerge(ASK_USER);
		chooseComment("Plate", addr("0x10028b1"), KEEP_LATEST); // Plate @ 0x10028b1
		chooseComment("Pre", addr("0x10028b1"), KEEP_MY); // Pre @ 0x10028b1
		chooseComment("Eol", addr("0x10028b1"), KEEP_BOTH); // Eol @ 0x10028b1
		chooseComment("Repeatable", addr("0x10028b1"), KEEP_LATEST); // Repeatable @ 0x10028b1
		chooseComment("Post", addr("0x10028b1"), KEEP_MY); // Post @ 0x10028b1
		waitForMergeCompletion();

		Listing listing = resultProgram.getListing();

		// EOL Comment @ 100283e
		assertEquals(listing.getCodeUnitAt(addr("0x100283e")).getComment(CommentType.EOL),
			"EOL Comment");

		// Pre Comment @ 1002840
		assertEquals(listing.getCodeUnitAt(addr("0x1002840")).getComment(CommentType.PRE),
			"Pre Comment");

		// Post Comment @ 1002843
		assertEquals(listing.getCodeUnitAt(addr("0x1002843")).getComment(CommentType.POST),
			"Post Comment");

		// Plate Comment @ 1002847
		assertEquals(listing.getCodeUnitAt(addr("0x1002847")).getComment(CommentType.PLATE),
			"Plate Comment");

		// Repeatable Comment @ 100284a
		assertEquals(listing.getCodeUnitAt(addr("0x100284a")).getComment(CommentType.REPEATABLE),
			"Repeatable Comment");

		// Latest has comment
		assertEquals(listing.getCodeUnitAt(addr("0x1001000")).getComment(CommentType.EOL),
			"EOL Comment");

		// Conflicts become latest comments @ 10028b1
		CodeUnit cu = listing.getCodeUnitAt(addr("0x10028b1"));
		assertEquals("Latest Plate Comment", cu.getComment(CommentType.PLATE));
		assertEquals("My Pre Comment", cu.getComment(CommentType.PRE));
		assertEquals("Latest EOL Comment" + "\n" + "My EOL Comment",
			cu.getComment(CommentType.EOL));
		assertEquals("Latest Repeatable Comment", cu.getComment(CommentType.REPEATABLE));
		assertEquals("My Post Comment", cu.getComment(CommentType.POST));
	}
Test the merge of the versioned program's listing.
Ghidra/Features/Base/src/test.slow/java/ghidra/app/merge/listing/CommentMergeManager2Test.java