public void captureListingRange(long start, long end, int width) {
		waitForSwing();

		CodeBrowserPlugin plugin = getPlugin(tool, CodeBrowserPlugin.class);
		FieldPanel fieldPanel = plugin.getFieldPanel();
		ListingPanel listingPanel = plugin.getListingPanel();

		plugin.goToField(addr(start), AddressFieldFactory.FIELD_NAME, 0, 0);
		fieldPanel.positionCursor(0);
		Rectangle startCursorBounds = fieldPanel.getCursorBounds();
		startCursorBounds.setLocation(
			SwingUtilities.convertPoint(fieldPanel, startCursorBounds.getLocation(), listingPanel));

		plugin.goToField(addr(end), AddressFieldFactory.FIELD_NAME, 0, 0, 0, false);
		Rectangle endCursorBounds = fieldPanel.getCursorBounds();
		endCursorBounds.setLocation(
			SwingUtilities.convertPoint(fieldPanel, endCursorBounds.getLocation(), listingPanel));

		int height = endCursorBounds.y + endCursorBounds.height;
		int extraHeight = height * 2;// arbitrary; big enough that we don't see scroll bars
		captureIsolatedComponent(plugin.getListingPanel(), width, extraHeight);
		int y = startCursorBounds.y;
		crop(new Rectangle(0, y, width - 40, height - y));
	}
Captures the window, including decorations. This will use a {@link Robot} to create a screen
capture, which has the effect of getting all items within the window bounds. This method is
needed if you wish to capture child windows, like popups/hovers.

<P>
Other capture methods will not use the screen capture mechanism, but rather will directly
render the given component. In this case, subordinate windows will not be captured. For
example, see {@link #captureProvider(Class)}.

@param provider the provider's name
@param width the desired width
@param height the desired height
Ghidra/Features/Base/src/main/java/help/screenshot/AbstractScreenShotGenerator.java