@Override
	public void findDataTypes(String name, List<DataType> list) {
		if (StringUtils.isBlank(name)) {
			return;
		}
		if (name.equals(DataType.DEFAULT.getName())) {
			list.add(DataType.DEFAULT);
			return;
		}

		// ignore .conflict in both name and result matches
		lock.acquire();
		try {
			buildSortedDataTypeList();
			// Use exemplar datatype in root category without .conflict to position at start
			// of possible matches
			String baseName = DataTypeUtilities.getNameWithoutConflict(name);
			DataType compareDataType =
				new TypedefDataType(CategoryPath.ROOT, baseName, DataType.DEFAULT, this);
			int index = Collections.binarySearch(sortedDataTypes, compareDataType, nameComparator);
			if (index < 0) {
				// this allows us to find foo.conflict types
				index = -index - 1;
			}

			// add all matches to list
			while (index < sortedDataTypes.size()) {
				DataType dt = sortedDataTypes.get(index);
				String baseDtName = DataTypeUtilities.getNameWithoutConflict(dt, false);
				if (!baseName.equals(baseDtName)) {
					break; // not foo or foo.conflict
				}

				list.add(dt);
				++index;
			}
		}
		finally {
			lock.release();
		}
	}
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