private void dragNodes(ProgramNode node, List<ProgramNode> list, int dropAction)
			throws Exception {
		AtomicReference<Exception> ref = new AtomicReference<>();
		runSwing(() -> {
			try {
				tree.processDropRequest(node, list, ProgramTreeTransferable.localTreeNodeFlavor,
					dropAction);
			}
			catch (NotFoundException | CircularDependencyException | DuplicateGroupException e) {
				ref.set(e);
			}
		});

		Exception exception = ref.get();
		if (exception != null) {
			throw exception;
		}

		waitForProgram(program);
	}
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