ComponentPlaceholder replacePlaceholder(ComponentProvider provider,
			ComponentPlaceholder defaultPlaceholder) {

		// Note: the 'restoredPlaceholder' is from xml; the 'defaultPlaceholder' is that which was
		// created by a plugin as it was constructed.  If there is no placeholder in the xml,
		// then the original 'defaultPlaceholder' will be returned from
		// createOrRecyclePlaceholder().
		ComponentPlaceholder restoredPlaceholder =
			createOrRecyclePlaceholder(provider, defaultPlaceholder);

		moveActions(defaultPlaceholder, restoredPlaceholder);
		if (!defaultPlaceholder.isHeaderShowing()) {
			restoredPlaceholder.showHeader(false);
		}

		if (defaultPlaceholder.isActive() != restoredPlaceholder.isActive()) {
			if (restoredPlaceholder.isActive()) {
				provider.componentShown();
			}
			else {
				provider.componentHidden();
			}
		}

		// if we have found a replacement placeholder, then remove the default placeholder
		if (restoredPlaceholder != defaultPlaceholder) {
			defaultPlaceholder.dispose();
			removePlaceholder(defaultPlaceholder);
		}

		return restoredPlaceholder;
	}
Managers {@link ComponentPlaceholder}s.  This includes creating them, saving placeholders
for later reuse and disposal.
Ghidra/Framework/Docking/src/main/java/docking/PlaceholderManager.java