public void cloneWindow() {
		DecompilerProvider newProvider = plugin.createNewDisconnectedProvider();

		// invoke later to give the window manage a chance to create the new window
		// (its done in an invoke later)
		Swing.runLater(() -> {

			ViewerPosition myViewPosition = controller.getDecompilerPanel().getViewerPosition();
			newProvider.doSetProgram(program);

			// Any change in the HighlightTokens should be delivered to the new panel
			DecompilerPanel myPanel = getDecompilerPanel();
			newProvider.setLocation(currentLocation, myPanel.getViewerPosition());

			// transfer any state after the new decompiler is initialized
			DecompilerPanel newPanel = newProvider.getDecompilerPanel();
			newProvider.doWhenNotBusy(() -> {
				newPanel.setViewerPosition(myViewPosition);
				newPanel.cloneHighlights(myPanel);
			});
		});
	}
Set the cursor location of the decompiler.

@param lineNumber the 1-based line number
@param offset the character offset into line; the offset is from the start of the line
Ghidra/Features/Decompiler/src/main/java/ghidra/app/plugin/core/decompile/DecompilerProvider.java