private static <T extends ComponentProvider> T getDetachedWindowProvider(
			final Class<T> providerClass, final DockingWindowManager windowManager) {

		Objects.requireNonNull(windowManager, "DockingWindowManager cannot be null");

		AtomicReference<T> ref = new AtomicReference<>();

		runSwing(() -> {
			Object rootNode = getInstanceField("root", windowManager);
			List<?> windowNodeList = (List<?>) invokeInstanceMethod("getDetachedWindows", rootNode);
			for (Object windowNode : windowNodeList) {
				Object childNode = getInstanceField("child", windowNode);
				ComponentProvider provider = getComponentProviderFromNode(childNode, providerClass);

				if (provider != null) {
					ref.set(providerClass.cast(provider));
				}
			}
		});

		return ref.get();
	}
These providers are those that appear in dialogs outside of the main frame *
Ghidra/Framework/Docking/src/main/java/docking/test/AbstractDockingTest.java