@Test
	public void testDnDFrag2FragInView() throws Exception {
		// drag a fragment in the view onto another fragment not in the view
		// verify that the dragged fragment is removed from the program
		// verify that the view shows the code units from the dragged fragment

		ProgramNode dataNode = root.getChild(".data");
		ProgramNode debugNode = root.getChild(".debug_data");
		setViewPaths(dataNode, debugNode);
		AddressSet set = new AddressSet();
		set.add(dataNode.getFragment());
		set.add(debugNode.getFragment());

		ProgramNode subrNode = root.getChild("Subroutines");
		visitNode(subrNode);
		ProgramNode node = subrNode.getChild("01004a15");
		// drop target is 01004a15
		setSelectionPath(node);

		AddressSet fragSet = new AddressSet(debugNode.getFragment());
		ArrayList<ProgramNode> list = new ArrayList<>();
		list.add(debugNode);

		//drag .debug_data to 01004a15
		dragNodes_Move(node, list);

		expandNode(root);
		assertNull(listing.getFragment("Main Tree", ".debug_data"));
		assertFalse(plugin.getView().contains(fragSet));

		assertEquals(0, findNodes(".debug_data").length);

		undo();
		expandNode(root);
		assertTrue(plugin.getView().hasSameAddresses(set));
		assertTrue(findNodes(".debug_data").length > 0);

		redo();
		expandNode(root);
		assertNull(listing.getFragment("Main Tree", ".debug_data"));
		assertFalse(plugin.getView().contains(fragSet));

		assertEquals(0, findNodes(".debug_data").length);
	}
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