@Override
	public DataType getDataType(String dataTypePath) {
		// Category path now has sourceID followed by ":" followed by path under that source.
		String name = getName();
		int nameLen = name.length();
		if (dataTypePath.length() > nameLen && dataTypePath.charAt(nameLen) == '/' &&
			dataTypePath.startsWith(name)) {
			dataTypePath = dataTypePath.substring(nameLen);
		}
		else if (!dataTypePath.startsWith("/")) {
			return null;
		}

		// Use a category path to parse the datatype path because it knows how to deal with
		// escaped forward slashes.
		CategoryPath parsedPath = new CategoryPath(dataTypePath);
		CategoryPath categoryPath = parsedPath.getParent();
		String dataTypeName = parsedPath.getName();
		Category category = getCategory(categoryPath);

		if (category == null) {
			return null;
		}
		return category.getDataType(dataTypeName);
	}
Replace one source archive (oldDTM) with another (newDTM). Any data types
whose source was the oldDTM will be changed to have a source that is the
newDTM. The oldDTM will no longer be referenced as a source by this data type
manager.

@param oldSourceArchive data type manager for the old source archive
@param newSourceArchive data type manager for the new source archive
@throws IllegalArgumentException if the oldDTM isn't currently a source
                                 archive for this data type manager or if the
                                 old and new source archives already have the
                                 same unique ID.
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/DataTypeManagerDB.java