@Override
	public Transferable getTransferable(Point p) {
		synchronized (root) {
			TreePath[] selectionPaths = getSelectionPaths();
			if (selectionPaths == null || selectionPaths.length == 0) {
				return null;
			}

			ProgramNode[] nodes = new ProgramNode[selectionPaths.length];
			for (int i = 0; i < nodes.length; i++) {
				nodes[i] = (ProgramNode) selectionPaths[i].getLastPathComponent();
			}

			transferable = new ProgramTreeTransferable(nodes);
			draggedNodes = nodes;
			return transferable;
		}
	}
Class to support Drag and Drop; it is also responsible for
rendering the icons, and  for editing a node name.
<p>The nodes that are used in this class are ProgramNode objects.</p>
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/programtree/DragNDropTree.java