@Test
	public void testReorderCopyFolder2FolderBelow() throws Exception {
		// expand Subroutines
		ProgramNode subrNode = root.getChild("Subroutines");
		expandNode(subrNode);
		// expand Strings
		ProgramNode stringsNode = root.getChild("Strings");
		expandNode(stringsNode);

		// drag/copy Strings between 01004a15 and 010030d8 in Subroutines
		ProgramNode node = subrNode.getChild("01004a15");
		ProgramNode strNode = stringsNode;

		runSwingWithException(() -> {
			dndManager.add(node, new ProgramNode[] { strNode }, DnDConstants.ACTION_COPY, 1);
		});
		waitForProgram(program);

		// verify that Strings is expanded and is the 3rd child in Subroutines
		// Verify that Strings remains selected
		// verify that Strings was not removed from root
		stringsNode = subrNode.getChild("Strings");
		assertTrue(tree.isExpanded(stringsNode.getTreePath()));
		assertEquals("Strings", subrNode.getChildAt(2).toString());
		assertTrue(tree.isPathSelected(stringsNode.getTreePath()));
		assertNotNull(root.getChild("Strings"));

		undo();
		subrNode = root.getChild("Subroutines");
		assertNull(subrNode.getChild("Strings"));
		assertNotNull(root.getChild("Strings"));

		redo();
		subrNode = root.getChild("Subroutines");
		stringsNode = subrNode.getChild("Strings");
		assertEquals("Strings", subrNode.getChildAt(2).toString());
		assertNotNull(root.getChild("Strings"));
	}
Tests for drag/drop/reorder for copy and move in the program tree.
Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/programtree/ProgramTreePlugin3Test.java