@Override
	public void restored(DataTypeManager dataTypeManager) {

		if (originalDTM == null) {
			// editor unloaded
			return;
		}

		if (!originalCompositeExists()) {

			if (originalCompositeId != DataTypeManager.NULL_DATATYPE_ID && !hasChanges) {
				provider.dispose(); // Close editor
				return;
			}

			// NOTE: Removed types will remain if used directly by edited components.
			if (viewDTM.refreshDBTypesFromOriginal()) {
				setStatus("Dependency datatypes have changed or been removed");
			}

			if (originalCompositeId != DataTypeManager.NULL_DATATYPE_ID) {
				provider.show();
				// The user has modified the structure so prompt for whether or
				// not to close the structure.
				String question = "The " + getOriginType() + " \"" + originalDTM.getName() +
					"\" has changed and \n" + "\"" + currentName +
					"\" no longer exists outside the editor.\n" + "Discard edits and close the " +
					getTypeName() + " editor?";
				String title = "Close " + getTypeName() + " Editor?";
				int response = OptionDialog.showYesNoDialogWithNoAsDefaultButton(
					provider.getComponent(), title, question);
				if (response == OptionDialog.YES_OPTION) {
					provider.dispose(); // Close editor
					return;
				}

				reloadFromView();

				return;
			}

			fireTableDataChanged();
			componentDataChanged();
			return;
		}

		T composite = getOriginalComposite();
		boolean reload = true;
		if (hasChanges || !viewComposite.isEquivalent(composite)) {
			hasChanges = true;
			provider.show();
			// The user has modified the structure so prompt for whether or
			// not to reload the structure.
			String question = "The " + getOriginType() + " \"" + originalDTM.getName() +
				"\" has been restored.\n" + "\"" + currentName +
				"\" may have changed outside the editor.\n" + "Discard edits and reload the " +
				getTypeName() + "?";
			String title = "Reload " + getTypeName() + " Editor?";
			int response = OptionDialog
					.showYesNoDialogWithNoAsDefaultButton(provider.getComponent(), title, question);
			if (response != OptionDialog.YES_OPTION) {
				reload = false;
			}
		}
		if (reload) {
			load(composite); // reload the structure
			setStatus("Editor reloaded");
			return;
		}

		if (viewDTM.refreshDBTypesFromOriginal()) {
			setStatus("Dependency datatypes have changed or been removed");
		}
		fireTableDataChanged();
		componentDataChanged();
	}
Returns whether the selected component(s) can be moved down (to the next higher index).
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/compositeeditor/CompEditorModel.java