private void paintNodes(List<GTreeNode> nodes, Graphics g) {
		TreeCellRenderer cellRenderer = tree.getCellRenderer();
		Rectangle clip = g.getClipBounds();
		Container parent = tree.getParent();
		int yOffset = 0;

		try {
			for (GTreeNode node : nodes) {

				int row = tree.getRowForPath(node.getTreePath());
				Rectangle rowBounds = tree.getRowBounds(row);
				rowBounds = SwingUtilities.convertRectangle(tree, rowBounds, parent);
				if (clip.y > rowBounds.y + rowBounds.height) {
					continue; // above our clip
				}

				if (clip.y + clip.height < rowBounds.y + rowBounds.height) {
					// painted past the bounds of our clip
					return;
				}

				Component renderer = cellRenderer.getTreeCellRendererComponent(tree, node, true,
					true, node.isLeaf(), row, false);
				renderer.setSize(renderer.getPreferredSize());

				// move down the point in our graphics space into which we will paint
				yOffset += rowBounds.height;
				g.translate(0, rowBounds.height);
				renderer.paint(g);
			}
		}
		finally {
			// restore the point into graphics that we will paint
			g.translate(0, -yOffset);
		}
	}
Paint each of the given nodes that is inside of the clips
Ghidra/Framework/Docking/src/main/java/docking/widgets/tree/internal/GTreeDragNDropAdapter.java