@Override
	public void dataTypeChanged(DataTypeManager dataTypeManager, DataTypePath path) {
		if (dataTypeManager != originalDTM) {
			throw new AssertException("Listener only supports original DTM");
		}
		if (!isLoaded()) {
			return;
		}

		DataType changedDt = originalDTM.getDataType(path);
		if (!(changedDt instanceof DatabaseObject)) {
			return;
		}
		DataType viewDt = viewDTM.findMyDataTypeFromOriginalID(originalDTM.getID(changedDt));
		if (viewDt == null) {
			return;
		}

		OffsetPairs offsetSelection = getRelOffsetSelection();
		try {
			viewDTM.replaceDataType(viewDt, changedDt, true);
			viewComposite.checkForStackGrowth();
		}
		catch (DataTypeDependencyException e) {
			throw new AssertException(e);
		}
		compositeInfoChanged(); // size info may have changed
		fireTableDataChanged();
		componentDataChanged();
		setRelOffsetSelection(offsetSelection);
	}
Adds the specified data type at the specified component index. Whether
an insert or replace occurs depends on whether the indicated index is
in a selection and whether in locked or unlocked mode.

@param index the component index of where to add the data type.
@param dt the data type to add

@return true if the component is added, false if it doesn't.
@throws UsrException if add fails
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/stackeditor/StackEditorModel.java