@Test
	public void testDnDCopyFrag2Folder() throws Exception {
		// drag/copy a fragment onto a folder that does not contain this fragment.
		// Verify that all occurrences of the dest folder are updated with the new child.
		// Verify that the original parent folder remains intact.
		ProgramNode textNode = root.getChild(".text");

		setSelectionPath(textNode);

		ProgramNode dllsNode = root.getChild("DLLs");
		int origCount = dllsNode.getChildCount();
		setSelectionPath(dllsNode);

		dragNodes_Copy(dllsNode, Arrays.asList(textNode));

		expandNode(dllsNode);
		ProgramNode child = (ProgramNode) dllsNode.getChildAt(dllsNode.getChildCount() - 1);
		assertEquals(".text", child.getName());
		assertNotNull(root.getChild(".text"));
		ProgramNode[] nodes = findNodes("DLLs");
		for (ProgramNode element : nodes) {
			assertNotNull(element.getChild(".text"));
		}

		undo();
		ProgramNode node = root.getChild("DLLs");
		assertEquals(origCount, node.getChildCount());
		redo();
		node = (ProgramNode) root.getChildAt(5);
		assertEquals(origCount + 1, node.getChildCount());
	}
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